zoukankan      html  css  js  c++  java
  • leetcode--Next Permutation

    Implement next permutation, which rearranges numbers into the lexicographically next greater permutation of numbers.

    If such arrangement is not possible, it must rearrange it as the lowest possible order (ie, sorted in ascending order).

    The replacement must be in-place, do not allocate extra memory.

    Here are some examples. Inputs are in the left-hand column and its corresponding outputs are in the right-hand column.
    1,2,3 → 1,3,2
    3,2,1 → 1,2,3
    1,1,5 → 1,5,1

    public class Solution {
        /**
    	 * The algorithm is standard. 
    	 * @param num --int array which represents a permutation
    	 * @author Averill Zheng
    	 * @version 2014-06-12 --world cup opening ceremony
    	 * @since JDK 1.7
    	 */
    	public void nextPermutation(int[] num) {
    		int length = num.length;
    		if(length > 0){	
    			int i = length - 2;
    			while(i > -1 && num[i] >= num[i + 1]){
    				--i;
    			}
    			if(i == -1)
    				Arrays.sort(num);
    			else{
    				int j = i + 1;
    				while(j < length && num[j] > num[i]){
    					++j;
    				}
    				//swap num[i] and num[j - 1];
    				int temp = num[j - 1];
    				num[j - 1] = num[i];
    				num[i] = temp;
    				++i;
    				j = length - 1;
    				while(i < j){
    					temp = num[j];
    					num[j] = num[i];
    					num[i] = temp;
    					++i;
    					--j;
    				}
    			}	
    		}
        }
    }
    

      

  • 相关阅读:
    常见常用的CSS
    Js删除数组函数
    使用CSS让多出来的字变为省略号
    CSS缩写的样式
    mac下安装nginx
    ubuntu下程序员常用命令大全
    vue.js实现瀑布流之vue-waterfall-easy
    vue.js常见的报错信息及其解决方法的记录
    laravel5.4生成验证码
    java算法之超级丑数
  • 原文地址:https://www.cnblogs.com/averillzheng/p/3785582.html
Copyright © 2011-2022 走看看