LeetCode_60 Permutation Sequence
来源:互联网 发布:单片机第二章答案详解 编辑:程序博客网 时间:2024/06/09 20:01
Link to original problem: 这里写链接内容
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.
Related problem:
31 Next Permutation: 这里写链接内容
46 Permutations: 这里写链接内容
因为这题只需要返回第k个permutation的结果就行了,所以没必要采取全遍历的算法,求出所有结果,再遍历一次得到第k个String。我们只需计算使用k计算每个位置该出现什么字符即可。具体代码如下:
public class Solution { public String getPermutation(int n, int k) { if(n == 1) return "1"; int[] mask = new int[n]; mask[0] = 1; mask[1] = 1; for(int ii = 2; ii < n; ii++){ mask[ii] = mask[ii-1]*ii; } k--; boolean[] used = new boolean[n]; char[] res = new char[n]; for(int ii = 0; ii < n; ii++){ int which = k/mask[n-1-ii]; int toWhich = -1; int index = -1; while(index < n && toWhich < which){ if(used[++index] == false) toWhich++; } res[ii] = (char) (index + '1'); used[index] = true; k = k%mask[n-1-ii]; } return new String(res); }}
0 0
- LeetCode_60---Permutation Sequence
- LeetCode_60 Permutation Sequence
- leetcode_60. Permutation Sequence 找n的全排列中的第k个序列
- Permutation Sequence
- Permutation Sequence
- Permutation Sequence
- Permutation Sequence
- Permutation Sequence
- Permutation Sequence
- Permutation Sequence
- Permutation Sequence
- Permutation Sequence
- Permutation Sequence
- Permutation Sequence
- Permutation Sequence
- Permutation Sequence
- Permutation Sequence
- Permutation Sequence
- LeetCode_46 Permutations
- LeetCode_47 Permutations II
- 51Nod1119机器人走方格(费马儿定理+快速幂函数) 好题
- printd函数的编写(递归)
- 使用python建立数据层模块,致敬廖雪峰老师
- LeetCode_60 Permutation Sequence
- CF618D - Hamiltonian Spanning Tree
- 【Leetcode】Binary Tree Level Order Traversal II
- 51Nod 1181 质数中的质数(质数筛选好题)(数论)
- LeetCode_77 Combinations
- LeetCode_78 Subsets
- LeetCode_79 Word Search
- Leetcode bit manipulation 总结
- BigBench: Toward An Industry-Standard Benchmark for Big Data Analytics