思路 主要思路是从后向前遍历找到最长“不增区间”的前一个元素比如:[1,2,3,7,4]找到[7,3]前的一个元素3;在[7,4]中找到该区间最小且大于3的元素4;swap 3,4–>[1,2,4,7,3]; 对于[7,3]排序–>[1,2,4,3,7] 代码 class Solution { public void nextPermutation(int[] nums) { int size = nums.length; int i = 0; for(i = size-1;i>=0;i--){ if((i==size-1)||(nums[i]>=nums[i+1])) continue; break; } if(i==-1){ for(int j=0,k=size-1;j<=k;j++,k--) { int tmp1 = nums[j];nums[j]=nums[k];nums[k]=tmp1;} return; } int larger = size-1; for(;larger>i;larger--) if(nums[larger]>nums[i]) break; int tmp2 = nums[i]; nums[i] = nums[larger]; nums[larger]=tmp2; for(int j=i+1,k=size-1;j<=k;j++,k--) { int tmp3 = nums[j];nums[j]=nums[k];nums[k]=tmp3;} } }