leetcode: Next Permutation
来源:互联网 发布:csgo辅助源码 编辑:程序博客网 时间:2024/05/01 11:40
stl的实现方法,先从后往前找一个相邻的第一个小于第二个的数对,然后从后往前找第一个大于上述数对第一个数字的数,交换两者,逆序数对第二个数到最后的所有数字
class Solution {public: void nextPermutation(vector<int> &num) { if( num.size() <= 1) return; int i = num.size() - 1; while(true){ int ii = i; --i; if( num[i] < num[ii]){ int j = num.size(); while( !(num[i] < num[--j])){} swap( num, i, j); reverse( num, ii); return; } if( i == 0){ reverse( num, i); return; } } } void swap( vector< int> &num, int i, int j){ int tmp = num[i]; num[i] = num[j]; num[j] = tmp; } void reverse( vector< int> &num, int i){ for( int j = i, k = num.size()-1; j < k; ++j, --k){ swap( num, j, k); } }};
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
- C++/C课程设计(3)工资管理系统源代码说明
- 怎样预防电脑辐射脱发
- AVL树-自平衡二叉查找树(Java实现)
- virtual box的centos 6.5增强功能与共享文件夹
- from setuptools import setup, find_packages ImportError: No module named set
- leetcode: Next Permutation
- zoj 2850 Beautiful Meadow
- 数据结构 队列
- Java从0开始 1
- C++求职宝典:第14章 面向对象
- discuz2.5 俄文版 编辑时出现\n\n的问题
- UI 第二节复习
- 哈希表函数详解
- MFC学习笔记(五)