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 will be between 1 and 9 inclusive.
class Solution {
public:
string getPermutation(int n, int k) {
// Note: The Solution object is instantiated only once and is reused by each test case.
if(n == 1)
return "1";
char *A = new char[n];
int mul = 1;
for(int i = 0 ; i < n ; i ++){
A[i] = (char)(i + '1');
mul *= (i +1);
}
k = k -1;
mul /= n;
for(int i = 0 ; i < n -1; i ++){
int temp = k / mul;
k %= mul;
mul /= (n-1 -i);
char c= A[i + temp];
for(int j = temp ; j >= 0; j --){
A[i + j ] = A[i +j-1];
}
A[i]= c;
}
return string(A,A+n);
}
};