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) {
k -= 1;
int factor = 1;
vector<char> a;
for (int i = 1; i < n; i++)
{
factor *= i;
a.push_back(i+'0');
}
a.push_back(n+'0');
int boundary = n-1;
string result;
while (k > 0)
{
int temp = k/factor;//以n=3为例,最高位每两次换一个。假设"123"为第0个,查找的第4个为"312"。则temp=4/2=2,所以将a[2]添加入字符串中。
result += a[temp];
a.erase(a.begin()+temp);
k %= factor;
factor /= boundary;
boundary -= 1;
}
int len = a.size();
for (int i = 0; i < len; i++)
{
result += a[i];
}
return result;
}
};