您的位置:首页 > 其它

leetcode做题总结,题目Next Permutation 31

2015-01-25 11:38 375 查看
这道题的思路是从后往前历遍,找到第一个非递增的数,然后和后面的数里大于它的最小数交换,然后对后面的数排序即可,如果全部是从前往后递减,则对整个数排序

class Solution11 {
public void nextPermutation(int[] num) {

int i = num.length-1;

while(--i>=0){
if(num[i]<num[i+1]){
int min = num[i+1];
int ind = i+1;
for(int j=i+2;j<num.length;j++){
if(num[j]<min&&num[j]>num[i]){
min=num[j];
ind=j;
}
}

int tmp = num[ind];
num[ind]=num[i];
num[i]=tmp;
if(i+1<num.length)
Arrays.sort(num,i+1,num.length);
return;
}

}
Arrays.sort(num);
return;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: