388.Permutation Sequence-第k个排列(中等题)

第k个排列

  1. 题目

    给定 n 和 k,求123..n组成的排列中的第 k 个排列。

    注意事项
    1 ≤ n ≤ 9

  2. 样例

    对于 n = 3, 所有的排列如下:
    123
    132
    213
    231
    312
    321
    如果 k = 4, 第4个排列为,231.

  3. 题解

    简单的字典排序。

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


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部