给定一个若干整数的排列,给出按正数大小进行字典序从小到大排序后的下一个排列。
如果没有下一个排列,则输出字典序最小的序列。
样例
左边是原始排列,右边是对应的下一个排列。
1,2,3
→ 1,3,2
3,2,1
→ 1,2,3
1,1,5
→ 1,5,1
class Solution {
public:
bool nextPermutation(vector<int> &nums) {
int n=nums.size();
for(int i=n-1;i>=0;--i){
for(int j=n-1;j>i;--j){
if(nums[j]>nums[i]){
swap(nums[j],nums[i]);
sort(nums.begin()+i+1,nums.end());
return true;
}
}
}
sort(nums.begin(),nums.end());
return false;
}
};