博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[LeetCode]Next Permutation
阅读量:4150 次
发布时间:2019-05-25

本文共 2131 字,大约阅读时间需要 7 分钟。

class Solution {//from right to left find the minimum larger number to replace the current number//once find, swap(current, minimum larger number), then sort(current+1, end)//find out the regular patternpublic:	void nextPermutation(vector
&num) { // Start typing your C/C++ solution below // DO NOT write int main() function bool flag = false; for (int i = num.size()-2; i >= 0; --i) { int index = findNearestLarge(i, num.size()-1, num); if(index != -1) { swap(num[i], num[index]); sort(num.begin()+i+1, num.end()); flag = true; break; } } if(!flag) sort(num.begin(), num.end()); } int findNearestLarge( int regionStart, int regionEnd , vector
& num) { //throw std::exception("The method or operation is not implemented."); int flag = false; int minIdx = -1; for (int i = regionStart; i <= regionEnd; ++i) { if (num[i] > num[regionStart]) { if(minIdx == -1) minIdx = i; else if (num[minIdx] > num[i]) minIdx = i; } } return minIdx; }};

second time

class Solution {public:    void nextPermutation(vector
&num) { // Start typing your C/C++ solution below // DO NOT write int main() function if(num.size() == 0) return; int maxReverse = num[num.size()-1]; int index = -1; for(int i = num.size()-2; i >= 0; --i) { if(maxReverse > num[i]) { index = i; break; } else maxReverse = max(maxReverse, num[i]); } //not found if(index == -1) { sort(num.begin(), num.end()); return; } else { //find the minimum bigger element int minNum = num[index+1]; int minIdx = index+1; for(int i = index+1; i < num.size(); ++i) { if(num[i] > num[index] && num[i] < minNum) { minNum = num[i]; minIdx = i; } } swap(num[index], num[minIdx]); sort(num.begin()+index+1, num.end()); } }};

转载地址:http://ymxti.baihongyu.com/

你可能感兴趣的文章
Java编程案例之学生管理系统
查看>>
Java SE之静态和代码块
查看>>
关于webService的一些理解
查看>>
项目管理工具的使用
查看>>
SpringDataJpa原理及使用
查看>>
懒加载错误的三种处理方案
查看>>
消息队列ActiveMQ的使用
查看>>
定时发短信(quartz框架,阿里大于)
查看>>
常用网址
查看>>
springmvc和mybatis整合(总结)
查看>>
string-boot详解
查看>>
El表达式详解
查看>>
shiro框架
查看>>
类的设计技巧
查看>>
java中跳出外循环或者跳出代码块的方法
查看>>
枚举的使用
查看>>
java的各种跳转总结
查看>>
ImageIO读图片和上传图片到OSS上的bug
查看>>
通过putty将本地文件上传到服务器
查看>>
merge 无效原因及解决方案
查看>>