Next Permutation
2016-03-11 17:50
169 查看
不懂为什么这么做
在当前序列中,从尾端向前寻找两个相邻元素,前一个记为*i,后一个记为*t,并且满足*i < *t。然后再从尾端
寻找另一个元素*j,如果满足*i < *j,即将第i个元素与第j个元素对调,并将第t个元素之后(包括t)的所有元
素颠倒排序,即求出下一个序列了。
STL中有这个next_permutation函数
在当前序列中,从尾端向前寻找两个相邻元素,前一个记为*i,后一个记为*t,并且满足*i < *t。然后再从尾端
寻找另一个元素*j,如果满足*i < *j,即将第i个元素与第j个元素对调,并将第t个元素之后(包括t)的所有元
素颠倒排序,即求出下一个序列了。
STL中有这个next_permutation函数
class Solution { public: void nextPermutation(vector<int>& nums) { if(nums.size()<2) return; int i,k; for(i= nums.size()-2;i>=0;--i) if(nums[i]<nums[i+1]) break; for(k=nums.size()-1;k>i;--k) if(nums[i]<nums[k]) break; if(i>=0) swap(nums[i],nums[k]); reverse(nums.begin()+i+1,nums.end()); } };
相关文章推荐
- 用Java抓取CSDN主页上的图片
- MySQL慢查询日志
- VC6.0下更改字体(win64) oracle解锁用户
- Linux 用户&群组&权限
- FlowLayout流式布局
- 初用Ubuntu常见问题及解决方案之一
- 单项练习成果链接。。。。。弱爆了。。。。。。
- 保存cookie
- 蓝桥杯 三羊献瑞
- iOS开发-21UINavigationController导航控制器初始化 导航控制器栈的push和pop跳转理解
- C++第1次实验
- [caffe] 数据制作和训练
- Java线程Dump分析工具--jstack(转)
- Java应用中使用ShutdownHook友好地清理现场(转)
- Android初试--请求码和结果码
- block传值
- asm基础——汇编指令之ascii调整指令
- DirectFB的问题
- 关于iOS中用AudioFile相关API解码或播放AAC_HE_V2时仅仅能识别单声首22.05k採样率的问题
- 二分图水一波~~~~d带你飞