LeetCode2.1.12(Next Permutation)

来源:互联网 发布:高阶矩阵计算 编辑:程序博客网 时间:2024/04/28 18:17
2.1.12 Next Permutation
描述
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.
Here are some examples. Inputs are in the le-hand column and its corresponding outputs are in the
right-hand column.

1,2,3 → 1,3,2

3,2,1 → 1,2,3

1,1,5 → 1,5,1

这道题的思路相当精彩,在于从右到左找到第一个递增的数对

public static void solution2_1_12(int[] array){int i=array.length-1;for(;i>0;i--){if(array[i-1]<array[i])break;}if(i==0)return;else{int j=i-1;int t=array.length-1;for(;t>j;t--){if(array[t]>array[j])break;}int temp=array[j];array[j]=array[t];array[t]=temp;for(int k=j+1;k<array.length-1;k++){int index=array.length+1-k;if(k<index){temp=array[k];array[k]=array[index];array[index]=temp;}}}for(int k=0;k<array.length;k++)System.out.print(array[k]+" ");}



0 0