给定一个整数数组来表示排列,找出其上一个排列。
样例
给出排列[1,3,2,3]
,其上一个排列是[1,2,3,3]
给出排列[1,2,3,4]
,其上一个排列是[4,3,2,1]
注意
排列中可能包含重复的整数
class Solution {
public:
vector<int> previousPermuation(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[i]>nums[j]){
swap(nums[i],nums[j]);
sort(nums.begin()+i+1,nums.end(),greater<int>());
return nums;
}
}
}
sort(nums.begin(),nums.end(),greater<int>());
return nums;
}
};