标签:leetcode
Permutation Sequence
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) {
int pTable[10] = { 1 };
for (int i = 1; i <= 9; i++){
pTable[i] = i * pTable[i - 1];
}
string result;
vector<char> numSet{ ‘1‘, ‘2‘, ‘3‘, ‘4‘, ‘5‘, ‘6‘, ‘7‘, ‘8‘, ‘9‘ };
while (n > 0){
int temp = (k - 1) / pTable[n - 1];
result += numSet[temp];
numSet.erase(numSet.begin() + temp);
k = k - temp * pTable[n - 1];
n--;
}
return result;
}
};
/*
In this program, pTable refers to permutation table and numSet refers to a set of numbers from 1 to 9.
Before while loop, we need to initialize pTable and numSet, which is trivial.
In while loop, we do these following things.
1 calculate which number we will use.
2 remove that number from numSet.
3 recalculate k.
4 n--.
Finally, we return result.
*/
版权声明:本文为博主原创文章,未经博主允许不得转载。
标签:leetcode
原文地址:http://blog.csdn.net/lmingyin5/article/details/47980283