leetcode - Next Permutation
来源:互联网 发布:司马迁 知乎 编辑:程序博客网 时间:2024/05/16 08:23
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
//这题的意思是给出一组数据,求出这个数据下一个字典序排列,可以按照如下的方法得到nextPermutation.//第一种情况,首先,假设数组为num,当前遍历的结点为k,如果,k前面的结点s < k 则将从k到数组的最后一个元素(包含k),找到一个最小大于s的结点n.//然后,swap(s,n),并且排序k到最后一个元素.第二种情况,如果这组数据是逆序的,那么,只要将数据升序排列就可以得到结果了。class Solution {public: void nextPermutation(std::vector<int> &num) {int i,j;for (i = num.size() - 1; i > 0 ; i--){if(num[i] > num[i-1]){j = i;while(j < (int)num.size() && num[j] > num[i-1]) j++;std::swap(num[j-1],num[i-1]);std::sort(num.begin()+i,num.end());break;}}if(i == 0)std::sort(num.begin(),num.end());#if 1for(std::vector<int>::iterator it = num.begin(); it != num.end(); it++){std::cout << *it << " ";}std::cout << std::endl;#endif // 1 }};
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
- linux内核的延时机制
- JBoss应用服务器7
- 直接插入排序 && 折半插入排序 && 希尔排序
- Qt实现对特定文件的遍历操作
- jQuery EasyUI系列教程之入门篇
- leetcode - Next Permutation
- ubuntu安装ftp
- CFileDialog的用法
- colormap函数
- 京东方校园招聘项目总结
- Android----Dialog大全
- 如何用MyEclipse生成jar文件和exe4j生成.exe
- FSIOT_A物联网实验设备中红外学习模块的使用例程
- leetcode Best Time to Buy and Sell Stock