Permutation Sequence - LeetCode
阿新 • • 發佈:2019-02-26
seq leet sina sequence i++ 變種 目錄 問題 rand
目錄
- 題目鏈接
- 註意點
- 解法
- 小結
題目鏈接
Permutation Sequence - LeetCode
註意點
- n >= 1 && n <= 9
- k >= 1 && k <= n!
解法
解法一:Next Permutation - LeetCode用這道題的函數,生成第n個序列,再轉成字符串。效率不高
class Solution { public: void nextPermutation(vector<int>& nums) { int n = nums.size(),i = n-2,j = n-1; while(i >= 0 && nums[i] >= nums[i+1]) i--; //cout << i; if(i >= 0) { while(nums[j] <= nums[i]) j--; swap(nums[i],nums[j]); } reverse(nums.begin()+i+1,nums.end()); } string getPermutation(int n, int k) { string ret =""; vector<int> nums; for(int i = 0;i < n;i++) { nums.push_back(i+1); } while(k > 1) { k--; nextPermutation(nums); } for(int i = 0;i <n ;i++) { ret += to_string(nums[i]); } return ret; } };
解法二:參考Grandyang的博客
小結
- 全排列問題的變種
Permutation Sequence - LeetCode