Total Accepted: 40746
Total Submissions: 174549
Difficulty: Medium
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.
Show Similar Problems
Have you met this question in a real interview?
Yes
No
class Solution {
public:
string searchNum(vector<bool> &signal, int count, string res)
{
char temp;
int i = 1;
for (i; i < signal.size() && count >= 0; i++)
{
if (signal[i] == false)
count--;
}
signal[i-1] = true;
temp = i-1 + 48;
res += temp;
return res;
}
string getPermutation(int n, int k)
{
vector<int> njie;
int count = 0;
njie.push_back(1);
vector<bool> nsignal;
nsignal.push_back(false);
for (int i = 1; i <= n; i++)
{
njie.push_back(njie[i - 1] * i);
nsignal.push_back(false);
}
string result = "";
k--;//此处特别特别重要,因为所有的都是从0开始计算,所以k要减1
int q = n - 1;
while (q>=0)
{
count = k / njie[q];
k = k%njie[q];
q--;
result = searchNum(nsignal, count, result);
}
return result;
}
};