60. Permutation Sequence
来源:互联网 发布:部落冲突野猪数据大全 编辑:程序博客网 时间:2024/06/07 06:32
题目:
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.
解题思路:
- n个数字有n!种全排列 所以求第k个 就是要求 第 k%n! 个;
- 而 每种数字开头的排列有 n!/n = (n-1)!个 所以,k/(n-1)! 可以获得 第k个全排列是以第几个数开头的。
- 同理 用k%(n-1)! 可以得到第K个全排列是以某个数字开头的 全排列中的第 几个;
- 重复上述的问题
class Solution{public: string getPermutation(int n, int k) { k--; //差点忘记了k=1时是不用处理的 vector<int> nums; int round =1; for(int i=1;i<=n;i++){ nums.push_back(i); round =round * i; //n! } string res; //输出 int cur_digit=n; //当前处理的位数 while(cur_digit>0){ round =round/cur_digit; // 每种数字开头的排列有 n!/n = (n-1)!个 int index =k/round; //k/(n-1)! 以第几个数开头 k= k%round; res+=(nums[index]+'0'); //将第cur_digit位 存入res nums.erase(nums.begin()+index); cur_digit --; //下一位 } return res; }};
阅读全文
0 0
- 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
- LeetCode 60. Permutation Sequence
- hiho 60. Permutation Sequence
- leetcode 60. Permutation Sequence
- codevs 1141 数列 二进制 解题报告
- AMD、CMD模块化规范
- 试题5:从尾到头打印链表
- 创建 Rex-Ray volume
- AndroidStudio小白入门——艰难地打开AndroidStudio,JAVA_HOME不存在以及/dev/kvm is not found
- 60. Permutation Sequence
- java并发中的ReentrantReadWriteLock
- 第十九课(一) 使用存储过程
- sql优化(1)
- LeetCode 62
- vmware下的ubuntu磁盘空间不够用,如何扩容
- 原码,反码,补码详解及 Java中>>和>>>的区别
- sql优化(2)
- equals和hashCode