60. Permutation Sequence
来源:互联网 发布:ios开发淘宝购物车 编辑:程序博客网 时间:2024/05/01 18:44
此题为一道数学题。我们以n = 4,k = 17为例,数组nums = [1,2,3,...,n]。第17个排列的第一个数是什么呢:我们知道以某个数固定开头的排列个数 = (n-1)! = 3! = 6, 即以1和2开头的排列总共6*2 = 12个,12 < 17, 因此第17个排列的第一个数不可能是1或者2,6*3 > 17, 因此第17个排列的第一个数是3。即第17个排列的第一个数是原数组(原数组递增有序)的第m = upper(17/6) = 3(upper表示向上取整)个数。第一个数固定后,我们从nums数组中删除该数,那么就相当于在当前src的基础上求第k - (m-1)*(n-1)! = 17 - 2*6 = 5个排列,因此可以递归的求解该问题。代码如下:
class Solution {public: string getPermutation(int n, int k) { int total = factorial(n); string candidate = string("123456789").substr(0, n); //注意string的这种初始化方法 string res(n,' '); for(int i = 0; i < n; i++) //依次计算排列的每个位。 { total /= (n-i); int index = (k-1) / total; //注意index的求法 res[i] = candidate[index]; candidate.erase(index, 1); //注意string erase方法的这种用法,表示从index开始删除1个元素 k -= index*total; } return res; } int factorial(int n) { int res = 1; for(int i = 2; i <= n; i++) res *= i; 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
- HALCON算子函数——Chapter 6 : Graphics
- 2015年7月29日
- HALCON算子函数——Chapter 5 : Filter
- css基础
- iOS开发UI篇 - 基本属性
- 60. Permutation Sequence
- Struts基础概念
- QT之设计部件背景色
- openCV—Python(7)——彩色图像R、G、B分量的提取与合并及其相关颜色空间的转化
- Java普通类获取Bean工具类
- 菜鸟学习百度地图总结
- HALCON算子函数——Chapter 4 : File
- 黑马程序员———IO转换流笔记
- hdoj1051Wooden Sticks