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.
Subscribe to see which companies asked this question
分析:用回溯法似乎太慢,有人用了一种数学的解法。看不懂
class Solution {
public:
string getPermutation(int n, int k) {
int Ptable[10]{1};
for(int t=1;t<10;++t)
Ptable[t]= t*Ptable[t-1];
vector<string> v1;
for(int i=1;i<10;++i)
{
v1.push_back(to_string(i));
}
string result="";
while(n>0)
{
int temp=(k-1)/Ptable[n-1];
result+=v1[temp];
v1.erase(v1.begin()+temp);
k=k-temp*Ptable[n-1];
--n;
}
return result;
}
};