您的位置:首页 > 其它

Next Permutation

2016-03-11 17:50 169 查看
不懂为什么这么做

在当前序列中,从尾端向前寻找两个相邻元素,前一个记为*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());
}
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: