1 2 7 4 3 1
下一個(gè)排列為:
1 3 1 2 4 7
那么是如何得到的呢,我們通過(guò)觀察原數(shù)組可以發(fā)現(xiàn),如果從末尾往前看,數(shù)字逐漸變大,到了2時(shí)才減小的,然后我們?cè)購(gòu)暮笸罢业谝粋€(gè)比2大的數(shù)字,是3,那么我們交換2和3,再把此時(shí)3后面的所有數(shù)字轉(zhuǎn)置一下即可,步驟如下:
1 2 7 4 3 1
1 2 7 4 3 1
1 3 7 4 2 1
1 3 1 2 4 7
class Solution {
public:
void nextPermutation(vector<int>& nums) {
int i=nums.size()-2;
while(i>=0&&nums[i+1]<=nums[i])i--;
if(i>=0)
{
int j=nums.size()-1;
while(nums[j]<=nums[i])j--;
swap(nums[i],nums[j]);
}
reverse(nums.begin()+i+1,nums.end());
}
};