leetcode刷题系列C++-next permutation
来源:互联网 发布:java开发客户端软件 编辑:程序博客网 时间:2024/05/21 09:02
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
Subscribe to see which companies asked this question
class Solution {public: void nextPermutation(vector<int>& nums) { int pos = -1; int length = nums.size(); //找到第一个升序的位置 for (int i = length - 1; i > 0; --i) { if(nums[i] > nums[ i - 1]) { pos = i - 1; break; } } //如果没有找到 也就是一直都是升序的 pos为负值 那么直接反序即可 if(pos < 0) { reverse(nums,0,length - 1); return; } //找到了破坏升序的那个数据 将该元素跟第一个比他大的元素交换 for(int i = length - 1; i > pos; --i) { if(nums[i] > nums[pos]) { int tmp = nums[i]; nums[i] = nums[pos]; nums[pos] = tmp; break; } } reverse(nums,pos + 1, length - 1); } void reverse(vector<int>& nums, int begin,int end) { int tmp = 0; while(begin < end) { tmp = nums[begin]; nums[begin] = nums[end]; nums[end] = tmp; begin++; end--; } }};
0 0
- leetcode刷题系列C++-next permutation
- [leetcode刷题系列]Next Permutation
- LeetCode(31): Next Permutation (C++)
- Leetcode c语言-Next Permutation
- LeetCode刷题笔录Next Permutation
- leetcode系列(45)Next Permutation
- [LeetCode] 031. Next Permutation (Medium) (C++/Python)
- [leetcode-31]Next Permutation(C)
- 【C++】【LeetCode】31. Next Permutation && 46. Permutations
- 【LeetCode算法练习(C++)】Next Permutation
- LeetCode算法题之Next Permutation
- LeetCode算法题——Next Permutation
- LeetCode: Next Permutation
- LeetCode Next Permutation
- LeetCode : Next Permutation
- [Leetcode] Next Permutation
- [LeetCode] Next Permutation
- [Leetcode] Next Permutation
- 用递归实现排列组合(java代码)
- 分布式集群系统下的高可用session解决方案
- JAVA反射获取类名,方法名,属性及构造方法
- JSP自定义标签(一) 树形下拉选择菜单
- Android知识结构
- leetcode刷题系列C++-next permutation
- magento优惠码提交不了
- Arrays
- 基于redis分布式缓存实现(新浪微博案例)
- java 面试题
- sql 查出一张表中重复的所有记录数据
- android:TableLayout表格布局详解
- 实现从网页上抓取数据(htmlparser)
- 关于使用 QEMU 对系统进行 profile