【leetcode】Array—— Next Permutation(31)
2016-03-01 14:27
267 查看
题目:
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 left-hand column and its corresponding outputs are in the right-hand column.
代码:
第一次尝试的时候,i 定位错误:
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 left-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 void nextPermutation(int[] nums) { if(nums==null||nums.length<=1) return; int i=nums.length-2; while (i>=0&&nums[i]>=nums[i+1]) i--; if(i>=0){ int j=nums.length-1; while(nums[j]<=nums[i]) j--; swap(nums,i,j); } reverseSort(nums, i+1, nums.length-1); } public void swap(int[] num, int i, int j){ int temp=0; temp=num[i]; num[i]=num[j]; num[j]=temp; } public void reverseSort(int[] num, int start, int end){ if(start>end) return; for(int i=start;i<=(end+start)/2;i++) swap(num,i,start+end-i); }
第一次尝试的时候,i 定位错误:
for(int i=nums.length-1;i>0;i--){ for(int j=i-1;j>=0;j--){ if(nums[i]>nums[j]) <span style="white-space:pre"> </span>//get the j } }只需要判断相邻两位就能知道是符合从左往右是升序,找到“打破点”后,再找”交换点“
相关文章推荐
- android 自定义Alertdialog对话框用于耗时加载
- C实现头插法和尾插法来构建单链表(带头结点)
- oc基础知识
- linux主机上webservice项目部署脚本
- 网络爬虫
- JS中的forEach、$.each、map方法
- BootSrap学习
- 如何排查Linux服务器上的恶意发包行为
- 基于特征分析的人脸识别
- 性能优化之Swap调优
- centos6.5 给Jenkins使用root权限执行脚本
- Set及其子类
- postman学习一
- Selenium练习脚本--调用firefox浏览器
- 30分钟让你了解MongoDB基本操作
- 展辰涂料如何利用K2BPM加强流程管控?
- 百度地图API 学习网站
- linux---postgresql的安装和配置
- delphi程序在自身EXE后(插入)追加文件、数据
- javascript类库 js动画