1 2 7 4 3 1
下一個(gè)排列為:
1 3 1 2 4 7
那么是如何得到的呢桶蛔,我們通過觀察原數(shù)組可以發(fā)現(xiàn)皇筛,如果從末尾往前看避凝,數(shù)字逐漸變大,到了2時(shí)才減小的恩沽,然后我們?cè)購暮笸罢业谝粋€(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());
}
};