首页 > 代码库 > LeetCode OJ--Next Permutation *
LeetCode OJ--Next Permutation *
求一个排列的下一个排列。
1,2,3
→ 1,3,2
3,2,1
→ 1,2,3
1,1,5
→ 1,5,1
#include <iostream> #include <vector> #include <algorithm> using namespace std; class Solution{ public: void nextPermutation(vector<int> &num) { if(num.size() == 0) return; const vector<int>::reverse_iterator rfirst= num.rbegin(); const vector<int>::reverse_iterator rend = num.rend(); auto pivot = next(rfirst); while(pivot != rend && *pivot >= *prev(pivot)) { ++pivot; } if(pivot == rend) { reverse(rfirst,rend); return; } //find the first num great than pivot auto change = rfirst; while(*change<=*pivot) ++change; swap(*change,*pivot); reverse(rfirst,pivot); return; } }; int main() { vector<int> num; num.push_back(1); num.push_back(1); num.push_back(5); Solution myS; myS.nextPermutation(num); return 0; }
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。