[LeetCode] Next Permutation
来源:互联网 发布:剑灵但丁捏脸数据 编辑:程序博客网 时间:2024/05/16 10:41
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 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
解题思路:
这是一道算法题。学到了新的办法。开心。解法如下:
class Solution {public: void nextPermutation(vector<int> &num) { int len = num.size(); if(len<2){ return; } //从右到左第一个逆序的 int target1=-1; for(int i=len-2; i>=0; i--){ if(num[i]<num[i+1]){ target1=i; break; } } if(target1>=0){ int target2=-1; for(int i=len-1; i>target1; i--){ if(num[i]>num[target1]){ target2=i; break; } } swap(num, target1, target2); } reverse(num, target1+1, len-1); } void swap(vector<int>& num, int i, int j){ int temp=num[i]; num[i]=num[j]; num[j]=temp; } void reverse(vector<int>& num, int i, int j){ while(i<j){ swap(num, i, j); i++; j--; } }};
0 0
- LeetCode: Next Permutation
- LeetCode Next Permutation
- LeetCode : Next Permutation
- [Leetcode] Next Permutation
- [LeetCode] Next Permutation
- [Leetcode] Next Permutation
- leetcode 88: Next Permutation
- [LeetCode]Next Permutation
- LeetCode-Next Permutation
- [leetcode]Next Permutation
- LeetCode - Next Permutation
- LeetCode 31: Next Permutation
- 【leetcode】Next Permutation
- LeetCode题解:Next Permutation
- 【LeetCode】Next Permutation
- [LeetCode] Next Permutation
- LeetCode Next Permutation
- leetCode | Next Permutation
- FFmpeg的Android平台移植—编译篇
- 欧拉工程第11题
- Sublime Text 3 支持的热门插件推荐
- VC++6.0调试篇:变量的观察--watch窗口的技巧
- 数组
- [LeetCode] Next Permutation
- Spring注解@Component、@Repository、@Service、@Controller区别
- SVM(四)为何需要核函数
- 黑马程序员——正则表达式
- Servlet的生命周期
- 记第二次去上海
- CentOS 6.5下利用Rsyslog+LogAnalyzer+MySQL部署日志服务器
- C#界面之为TreeView上任意子节点添加Click事件
- EJB+Annotation实现AOP