388.Permutation Sequence-第k个排列(中等题)
第k个排列
题目
给定 n 和 k,求123..n组成的排列中的第 k 个排列。
注意事项
1 ≤ n ≤ 9样例
对于 n = 3, 所有的排列如下:
123
132
213
231
312
321
如果 k = 4, 第4个排列为,231.题解
简单的字典排序。
class Solution {/*** @param n: n* @param k: the kth permutation* @return: return the k-th permutation*/public String getPermutation(int n, int k) {int[] A = new int[n];for (int i=1;i<=n;i++){A[i-1] = i;}k--;while (k-- > 0){nextPermutation(A);}StringBuilder sb = new StringBuilder();for (int i=0;ireturn sb.toString();}public void nextPermutation(int[] nums) {int n = nums.length;if (n > 1){for(int i=n-2;i>=0;i--) { if (nums[i] < nums[i+1]){for (int j=n-1;j>i;j--){if (nums[j] > nums[i]){swap(nums,i,j);reverse(nums,i+1,nums.length-1);return;}}}} }reverse(nums,0,nums.length-1);}private void swap(int[] nums,int i,int j){int temp = nums[i];nums[i] = nums[j];nums[j] = temp;}private void reverse(int[] nums,int start,int end){for (int i=start,j=end;i
Last Update 2016.11.13
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
