【Leetcode】Permutation Sequence
来源:互联网 发布:便宜有好看的淘宝店铺 编辑:程序博客网 时间:2024/05/21 17:11
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的全排列中找到第k个字符串,并返回。
关键点:1)设num=(k-1)/factorial,factorial是1至n-1的乘积。可以知道第一个数就是从1到n中第num+1大的数,然后将reminder=(k-1)%factorial作为下一轮的k,这时求num不再需要让k-1。
2)按照上述方式不断的求下一轮的数字,将其添加到返回字符串s的结尾处,并将已经添加的数字置为0,这个时候寻找第num+1大的数时要记得忽略掉之前已经添加的数。
3)如此循环往复,直到n=0.
class Solution {public: string getPermutation(int n, int k) { if(n==1) return "1"; string s=""; int *a=new int[n]; for(int i=0;i<n;i++) { a[i]=i+1; } int factorial=1; for(int i=1;i<=n-1;i++) factorial*=i; int num,reminder; while(true) { num=(k-1)/factorial; reminder=(k-1)%factorial; int j=0; while(num--) { while(a[j]==0) j++; j++; } while(a[j]==0) j++; char temp='0'+a[j]; a[j]=0; s+=temp; n--; if(n==0) return s; k=reminder+1; factorial/=n; } } };
0 0
- LeetCode: Permutation Sequence
- LeetCode Permutation Sequence
- [Leetcode] Permutation Sequence
- [LeetCode] Permutation Sequence
- leetcode 74: Permutation Sequence
- leetcode Permutation Sequence
- [leetcode] Permutation Sequence
- [LeetCode]Permutation Sequence
- LeetCode:Permutation Sequence
- LeetCode-Permutation SequencePermutation Sequence
- [leetcode] Permutation Sequence
- LeetCode - Permutation Sequence
- LeetCode:Permutation Sequence
- LeetCode 60: Permutation Sequence
- Leetcode: Permutation Sequence
- leetcode Permutation Sequence
- LeetCode | Permutation Sequence
- LeetCode Permutation Sequence
- how client gets windowmanager.txt
- ORACLE数据字典与视图及DBA常用SQL
- 正经年代
- IOS沙盒机制和文件操作(1)
- 编程语言发展的编年史
- 【Leetcode】Permutation Sequence
- Linux shell截取字符串方法总结
- android-----(自动提示)AutoCompleteTextView的使用
- POJ 1273 Drainage Ditches 网络流最大流
- 二叉树转换为双向链表
- 程序员最艰巨的十大任务
- Spring3.1 MVC和jQuery ajax的集成
- Hive元数据解析
- UVa 10635