31. Next Permutation
来源:互联网 发布:爱知产业大学 推荐入学 编辑:程序博客网 时间:2024/06/06 23:21
1、题目描述
给出一个数组表示一种排列,根据字典序,返回它的下一个更大的排列。
2、思路
1、先从尾往头找到数组中的一个特殊位置,其特点为该位置的前一个数字小于当前数字。该位置index为i。
2、若i==0,则说明输入已经是最大排列了,所以将数字reverse,返回其最小排列作为答案。
3、设lowid = i - 1; 从i开始往后,找到一个位置highid,highid所在位置的数字大于lowid的数,而highid+1的数小于或等于lowid的数。
4、交换 nums[highid] 与 nums[lowid],这样等于说把一个稍大的数换到前面去了,后面的数字从第i位开始依旧是递减的。
5、将第i位到数组最后一位逆序,变成升序。
3、代码
void nextPermutation(vector<int>& nums) { int n = nums.size(); int i=n-1; for(;i>=1;i--){ if(nums[i]>nums[i-1]) break; } if(i==0){ reverse(nums.begin(),nums.end()); return; } int lowid = i-1; int j=i; for(;j<n;j++){ if(nums[j]<=nums[lowid]) break; } int highid=j-1; swap(nums[lowid],nums[highid]); for(int a = i,b=n-1;a<b;a++,b--){ swap(nums[a],nums[b]); } }
阅读全文
0 0
- [LeetCode]31.Next Permutation
- LeetCode --- 31. Next Permutation
- [Leetcode] 31. Next Permutation
- LeetCode 31.Next Permutation
- 31. Next Permutation
- [leetcode] 31.Next Permutation
- [leetcode] 31. Next Permutation
- *LeetCode 31. Next Permutation
- 31. Next Permutation
- Leetcode 31. Next Permutation
- 31. Next Permutation
- 31. Next Permutation
- 31. Next Permutation
- leetcode 31. Next Permutation
- 31. Next Permutation LeetCode
- 31. Next Permutation
- 31. Next Permutation
- 31. Next Permutation
- 实时搜索引擎Elasticsearch(5)——Java API的使用
- 湖北掌大协议拨号Python脚本
- 中国首个行业AI决策系统「DeepMatrix」面世,距离真正实现人机协同发展还有多远
- 错误:java.lang.IllegalArgumentException: No view found for id 0x7f1001c1
- 详解正则表达式中的\B和\b
- 31. Next Permutation
- Java EE JSP内置对象及表达式语言
- Java使用Redis
- 接口测试工具 Postman 使用实践
- 奔溃的时候堆栈里面打印出来了这个 _GLOBAL_OFFSET_TABLE_ ()
- 机器人没头脑也能走得稳稳当当
- pycharm 版本控制
- pintos (2) --Priority Scheduling
- 【C#编程最佳实践 四】XML配置文件编写与读取实践