31、Next Permutation
下一個排列
給定一個整數數組來表示排列,找出其之後的一個排列。
注意事項
排列中可能包含重複的整數
樣例
給出排列[1,3,2,3]
,其下一個排列是[1,3,3,2]
給出排列[4,3,2,1]
,其下一個排列是[1,2,3,4]
分析:
代碼:
class Solution {
public:
void nextPermutation(vector<int>& nums) {
int N=nums.size();
int count=-1;
for(int i=N-2;i>=0;i--)
if(nums[i]<nums[i+1])
{
count=i;
break;
}
if(count==-1)
{
reverse(nums.begin(),nums.end());
return;
}
int j;
for(j=N-1;j>count;j--)
if(nums[j]>nums[count])
break;
swap(nums[count],nums[j]);
reverse(nums.begin()+count+1,nums.end());
}
};