首页 > 代码库 > STL-next permutation
STL-next permutation
过程:
从右往左,找到第一个A[i] < A[i+1];
从右往左,找到第一个A[j] > A[i], j > i;
交换A[i] 与 A[j];
将A[j+1]之后的元素逆序。
代码:
1 class Solution { 2 public: 3 void nextPermutation(vector<int> &num) { 4 if(num.size() < 2) 5 return; 6 int i, j; 7 for(i = num.size() - 2; i >= 0 && num[i] >= num[i+1]; --i) //第一个有序对 8 ; 9 if(i < 0) //已经是逆序10 {11 reverse(num.begin(), num.end());12 return;13 }14 for(j = num.size() - 1; num[j] <= num[i]; --j) //第一个大于A[i]的15 ;16 swap(num[i], num[j]);17 reverse(num.begin() + i + 1, num.end());18 }19 };
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。