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.
Class Solution {public: string getpermutation (int n, int k) { vector<char> pers (n, ' 1 '); int fact = n; for (int i=1; i<n; i++) { fact *= i; Pers[i] = ' 1 ' + i; } k--; string ans; for (int i=0; i<n; i++) { fact/= (n-i); const int J = K/fact; K%= fact; Ans.push_back (Pers[j]); Pers.erase (Pers.begin () +j); } return ans; };
On Leetcode, the actual execution time is 5ms.
Basic ideas:
The weight of each bit is calculated by referring to the common method, and the value of each bit is calculated from the high to the low by dividing and taking the remainder.
The difference is that this weight is the factorial value, unlike the normal binary, which is the power of the cardinality.
Permutation Sequence--Leetcode