60. Permutation Sequence(难)
来源:互联网 发布:java所有关键字 编辑:程序博客网 时间:2024/05/16 06:44
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.
参考Permutation Sequence -- LeetCode
思路是这样的,比如当前长度是n,我们知道每个相同的起始元素对应(n-1)!个permutation,也就是(n-1)!个permutation后会换一个起始元素。因此,只要当前的k进行(n-1)!取余,得到的数字就是当前剩余数组的index,如此就可以得到对应的元素。如此递推直到数组中没有元素结束。实现中我们要维护一个数组来记录当前的元素,每次得到一个元素加入结果数组,然后从剩余数组中移除。
class Solution {public:string getPermutation(int n, int k) {k--;vector<int> nums;for (int i = 1; i <= n; i++){nums.push_back(i);}int fac = 1;for (int i = 2; i < n; i++){fac *= i;}string res;int round = n - 1;while (round >= 0){int index = k / fac;k %= fac;res += nums[index] + '0';nums.erase(nums.begin()+index);if (round){fac /= round;}round--;}return res;}};
0 0
- 60. Permutation Sequence(难)
- LeetCode 60. Permutation Sequence(排列序列)
- 1.4字符串:60.Permutation Sequence(Leetocde)
- LeetCode --- 60. Permutation Sequence
- [Leetcode] 60. Permutation Sequence
- [leetcode] 60.Permutation Sequence
- 60. Permutation Sequence
- 60. Permutation Sequence
- **LeetCode 60. Permutation Sequence
- leetcode 60. Permutation Sequence
- 60. Permutation Sequence
- 60. Permutation Sequence
- 60. Permutation Sequence
- 60. Permutation Sequence
- 60. Permutation Sequence
- [LeetCode]60. Permutation Sequence
- LeetCode *** 60. Permutation Sequence
- 60. Permutation Sequence
- 代码上传到github,gitlab等git仓库进行托管
- semaphore的简介
- LeetCode 260:Single number3
- 软件开发简述总结
- [PAT] B1004
- 60. Permutation Sequence(难)
- 关于Jsoup的一些认识
- 中断之中断向量表IDT的初始化
- 【lightoj1307】Counting Triangles
- GreenDao的使用
- 区间DP——Dire Wolf ( HDU 5115 )
- NYOJ 1170 最大的数(待续)
- mysql 数据库的事务隔离级别及mysql 索引优化
- matlab:从参考二维矩阵中选择出指定的元素