zoukankan      html  css  js  c++  java
  • nextPermutation

    题解

    31. 下一个排列
    实现获取下一个排列的函数,算法需要将给定数字序列重新排列成字典序中下一个更大的排列。
    
    如果不存在下一个更大的排列,则将数字重新排列成最小的排列(即升序排列)。
    
    必须原地修改,只允许使用额外常数空间。
    
    以下是一些例子,输入位于左侧列,其相应输出位于右侧列。
    1,2,3 → 1,3,2
    3,2,1 → 1,2,3
    1,1,5 → 1,5,1
    
    通过次数69,013提交次数203,361
    
    public void nextPermutation(int[] nums) {
            if(nums.length == 0) return;
            int len = nums.length;
            for(int i=len-1; i>=0 ;i--) {
                if (nums[i] <= nums[i - 1]) {
                    // 与其再次在j-end中从后往前找一个小于i的k,再把k-end排序
                    // 不如直接将j-end排序
                    // 然后从j-end中升序找一个小于i的进行交换即可
                    Arrays.sort(nums, i, len);
                    break;
                }
                for(int j=i; j<len;j++){
                    if(nums[j] >nums[i-1]){
                        int tmp = nums[j];
                        nums[j] = nums[i-1];
                        nums[i-1] = tmp;
                        return;
                    }
                }
            }
            Arrays.sort(nums);
        }
    
  • 相关阅读:
    mysql 数据库备份
    半同步复制
    mysql在线热备
    mysqlxtrabackup备份
    MySQL备份与恢复
    Mysql语句类型
    MySQL的体系结构
    MySQL介绍及安装
    Shell-02-if
    Shell 脚本进阶,经典用法及其案例
  • 原文地址:https://www.cnblogs.com/athony/p/13198201.html
Copyright © 2011-2022 走看看