Skip to content

Next Permutation

Tim_Gao edited this page Sep 17, 2016 · 1 revision
  1. mistake: Should use nums[index] <= nuts[pos-1]
            while(index >= pos && nums[index] < nums[pos-1]){
                --index;
            }
public class Solution {
    public void nextPermutation(int[] nums) {
        if (nums.length == 0){
            return;
        }
        int pos = nums.length-1;
        while(pos>0){
            if(nums[pos] > nums[pos-1]){
                break;
            }
            --pos;
        }
        if(pos != 0){
            int index = nums.length-1;
            while(index >= pos && nums[index] <= nums[pos-1]){
                --index;
            }
            int tmp = nums[pos-1];
            nums[pos-1] = nums[index];
            nums[index] = tmp;
        }
        int end = nums.length-1;
        while(pos<end){
            int tmp = nums[pos];
            nums[pos] = nums[end];
            nums[end] = tmp;
            ++pos;
            --end;
        }
        
    }
}

Clone this wiki locally