zoukankan      html  css  js  c++  java
  • [leetcode] 60. 第k个排列

    60. 第k个排列

    还是使用之前用过多次的nextPermutation方法。。。(几乎所有跟排列相关的题都是同一个题- -)

    class Solution {
        public String getPermutation(int n, int k) {
            int[] nums = new int[n];
            for (int i = 1; i <= n; i++) {
                nums[i - 1] = i;
            }
            while (k > 1) {
                nextPermutation(nums);
                k--;
            }
            StringBuilder ans = new StringBuilder();
            for (int num : nums) {
                ans.append(num);
            }
            return ans.toString();
        }
    
        // 当没有下一个排列时return false
        public boolean nextPermutation(int[] nums) {
            if (nums.length == 1) {
                return false;
            }
            int p = -1;
            for (int i = nums.length - 2; i >= 0; i--) {
                if (nums[i] < nums[i + 1]) {
                    p = i;
                    break;
                }
            }
    
            if (p != -1) {
                int tmp = nums[p];
                int q = nums.length - 1;
                while (nums[q] <= tmp) {
                    q--;
                }
    
                nums[p] = nums[q];
                nums[q] = tmp;
    
                reverse(p + 1, nums);
            } else {
    //            reverse(0, nums);
                return false;
            }
    
            return true;
        }
    
        public void reverse(int k, int[] nums) {
            if (k >= nums.length) return;
            int i = k;
            int j = nums.length - 1;
            while (i < j) {
                int tmp = nums[i];
                nums[i] = nums[j];
                nums[j] = tmp;
                i++;
                j--;
            }
        }
    }
    
  • 相关阅读:
    C#时间差
    centos8安装ffmpeg
    CentOS8同步时间
    安装Supervisor
    ajax 传递 token
    .net core 3.1 中 的跨域设置
    jaeger 本地编译
    Kubernates 环境搭建
    linux : find
    Linux: 文件分割和合并
  • 原文地址:https://www.cnblogs.com/acbingo/p/9357612.html
Copyright © 2011-2022 走看看