您的位置:首页 > 产品设计 > UI/UE

Permutation Sequence [LeetCode]

2013-11-14 16:27 519 查看
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.

Solutions: Caculates the index of the first number by idx = (k -1) / (n-1)! , and the new k and new n, then goes to next round.

string getPermutation(int n, int k) {
vector<int> nums;
vector<int> factors(1,1);
for(int i = 1; i <= n; i++){
nums.push_back(i);
factors.push_back(factors[i - 1] * i);
}

string ret;
while(k > 0 && nums.size() > 0) {
int idx = (k -1) / factors[n -1];
ret.push_back(nums[idx] + 48);
nums.erase(nums.begin() + idx);
k = k - idx * factors[n - 1];
n --;
}

return ret;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: