public class Solution { /** * @param nums: an array of integers * @return: return nothing (void), do not return anything, modify nums in-place instead */ public int[] nextPermutation(int[] nums) { int m = nums.length; int i = 0; for(i = m-1;i>=1;i--){ if(nums[i] > nums[i - 1]){ /*从后往前找到拐点,即后一个点比前一个点大,前一个点为拐点**/ /*在拐点之后找一个最小的数(这个数要比拐点大)* * 将这个数与拐点交换* * 再对拐点之后的数排序*/ int min = nums[i]; int index = i; for(int k = i;k<m;k++){ if(nums[k] <= min && nums[k] > nums[i - 1]){ min = nums[k]; index = k; } } int temp = nums[ i - 1]; nums[i - 1] = nums[index]; nums[index] = temp; Arrays.sort(nums, i, nums.length);/*对拐点之后的数排序***/ break; } } if(i == 0){ Arrays.sort(nums); } return nums; } }
[LintCode] 52. Next Permutation
猜你喜欢
转载自blog.csdn.net/js54100804/article/details/80178749
今日推荐
周排行