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

LEETCODE 60. Permutation Sequence

2017-05-15 12:47 288 查看

题目大意



解题思路

直接在http://blog.csdn.net/chenyaxue/article/details/71330633 next permutation的基础上改就好了。

代码

class Solution {
public:
string getPermutation(int n, int k) {
vector<int> numVec;
for (int i = 1; i <= n; i++) {
numVec.push_back(i);
}
for (int i = 1; i < k; i++) {
nextPermutation(numVec);
}
string resStr = "";
for (int i = 0; i < n; i++) {
resStr += '0' + numVec[i];
}
return resStr;
}
private:
void nextPermutation(vector<int>& nums) {
int stopInd = -1, temp = 0, nextInd = int(nums.size()) - 1;
for (int i = int(nums.size()) - 1; i > 0; i--) {
if (nums[i - 1] < nums[i]) {
stopInd = i - 1;
break;
}
}
if (stopInd >= 0) {
for (int i = int(nums.size()) - 1; i > stopInd; i--) {
if (nums[i] <= nums[stopInd]) {
nextInd--;
continue;
}
}
temp = nums[stopInd];
nums[stopInd] = nums[nextInd];
nums[nextInd] = temp;
}
sort(nums
9431
.begin() + stopInd + 1, nums.end());
}
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: