【LeetCode】60. Permutation Sequence
2017-03-09 17:42
309 查看
题目描述
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.
解题思路
排列本身是有规律的,所以直接根据数学规律算出结果就好了。AC代码
class Solution { public: string getPermutation(int n, int k) { string ans; //记录数字1到n vector<char> nums; //记录1到n的阶乘,因为全排序的个数是n的阶乘 vector<int> fac; fac.push_back(0); int mul = 1; for (int i = 1; i <= n; ++i) { nums.push_back(i + '0'); mul *= i; fac.push_back(mul); } k -= 1; int curIdx = 0; for (int i = 0; i < n - 1; ++i) { curIdx = k / fac[n - i - 1]; ans.push_back(nums[curIdx]); //当前数字已经加入排序中,移除 nums.erase(nums.begin() + curIdx); k %= fac[n - i - 1]; } ans.push_back(nums[0]); return ans; } };
相关文章推荐
- Leetcode 60. Permutation Sequence
- [leetcode] 60. Permutation Sequence
- 【LeetCode】60. Permutation Sequence
- leetcode No60. Permutation Sequence
- LeetCode 60. Permutation Sequence
- LeetCode 60. Permutation Sequence 全排列的第k个
- LEETCODE60. Permutation Sequence
- [LeetCode]60. Permutation Sequence
- leetcode 60. Permutation Sequence
- LeetCode 60. Permutation Sequence
- <LeetCode OJ> 60. Permutation Sequence
- Leetcode 60. Permutation Sequence
- [Leetcode] 60. Permutation Sequence
- [leetcode] 60. Permutation Sequence 解题报告
- 2018.1.13 LeetCode 47. Permutations II 60. Permutation Sequence 【STL简单应用】
- LeetCode||60. Permutation Sequence
- leetcode 60. Permutation Sequence
- LeetCode:60. Permutation Sequence
- Leetcode #60. Permutation Sequence 排列组合序列 解题报告
- Leetcode 60. Permutation Sequence (Medium) (cpp)