Permutation Sequence
The set [1,2,3,…,n] contains a total of n! unique permutations.
By listing and labeling all of the permutations in order,
We get the following sequence (ie, for n = 3):
"123"
"132"
"213"
"231"
"312"
"321"
Given n and K, return the kth permutation sequence.
Note:given N would be between 1 and 9 inclusive.
The law of this string is a small to large sequence of numbers, the K-string is the K-large number sequence string, then the brute force traversal is feasible, but too slow.
Another method is Cantor unfold, time complexity O (n), Space complexity O (1).
1 classSolution {2 Public:3 stringGetpermutation (intNintk) {4vector<int>numbers;5 for(intI=1; i<=n;i++)6 {7 Numbers.push_back (i);8 }9vector<int>result;Ten intb=k-1; One for(inti=n-1; i>=0; i--) A { - inta=b/(Jiecheng (i)); - Result.push_back (Numbers[a]); theNumbers.erase (Numbers.begin () +a); - if(i!=0) - { -b=b%(Jiecheng (i)); + } - } + stringResult_str; A for(intI=0; I<result.size (); i++) at { - Charch=result[i]+ -; -result_str+=ch; - } - returnResult_str; - } in intJiecheng (intN) - { to intresult=1; + for(intI=1; i<=n;i++) - { theresult*=i; * } $ returnresult;Panax Notoginseng } -};
[Leetcode] Permutation Sequence