LeetCode2.1.12(Next Permutation)
2015-08-22 16:42
351 查看
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
这道题的思路相当精彩,在于从右到左找到第一个递增的数对
描述
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]+" "); }
相关文章推荐
- PHP 面向对象之__toString
- C#通过调用系统命令执行R脚本
- 如何检索Android设备的唯一ID
- Python之requests的安装
- 有关label的学习笔记
- Problem 2089 数字游戏
- Android中静态变量(static)的使用
- 关于RadioGroup某个item设置为check后,会一直选中的问题
- Java中static关键字
- 多校The shortest problem
- Python第一天 - 函数
- hdu 1251 统计难题(字典树)
- LeetCode2.1.11(Remove Element)
- 淘宝天猫店铺装修问题与技巧性经验汇总
- UIButton及UITextfield
- Java Map接口总览
- 一个有趣的算法题。。。
- hdu 2222 Keywords Search(ac自动机)
- [转]执行mount命令时找不到介质或者mount:no medium found的解决办法
- TCP UDP简介