標籤:
Next Permutation
Total Accepted: 33595 Total Submissions: 134095
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.
解題思路:
題目不難,關鍵是理解題目的意思: 如果把nums看做一個數位話,即返回比原來數大的最小的數(如果沒有(原數是降序排列)則返回升序排列)。
難度不大,JAVA實現如下:
static public void nextPermutation(int[] nums) {int index = nums.length - 1;while (index >= 1) {if (nums[index] > nums[index - 1]) {int swapNum=nums[index-1],swapIndex = index+1;while (swapIndex <= nums.length - 1&& swapNum < nums[swapIndex])swapIndex++;nums[index-1]=nums[swapIndex-1];nums[swapIndex-1]=swapNum;reverse(nums,index);return;}index--;}reverse(nums,0);}static void reverse(int[] nums,int swapIndex){int[] swap=new int[nums.length-swapIndex];for(int i=0;i<swap.length;i++)swap[i]=nums[nums.length-1-i];for(int i=0;i<swap.length;i++)nums[swapIndex+i]=swap[i];}
Java for LeetCode 031 Next Permutation