题目
数组,按照递增,求下一组数组序列
代码
public class Solution {
public void nextPermutation(int[] num) {
if(num == null || num.length <=1){
return ;
}
int n = num.length;
int changeIndex =0;
for(int i = n-2;i>=0;i--){
int cur = num[i];
if(cur<num[i+1]){
changeIndex = i+1;
break;
}
}
if(changeIndex!=0){
int changedNum = num[changeIndex-1];
int minNum = num[n-1];
for(int i = n-1;i>=changeIndex;i--){
int cur = num[i];
if(cur > changedNum){
int temp = cur;
num[i] = changedNum;
num[changeIndex-1] = temp;
break;
}
}
}
Arrays.sort(num,changeIndex,n);
}
}
思路
1 方法: a 从尾到头,找到转折点。b 找到比转折点刚刚大的那个点,交换位置 3 转折点之后排序
2 因为是从头到尾,写法很容易出错。