class Solution {
public:
void swap(vector<int>& nums,int i,int change){
int temp;
temp = nums[i];
nums[i] = nums[change];
nums[change] = temp;
sort(nums.begin()+change+1, nums.end());
}
void nextPermutation(vector<int>& nums) {
using namespace std;
vector<int> origin;
origin = nums;
int change;
int temp;
for(int i = nums.size()-1;i>0;i--){
if(nums[i-1] < nums[i]){
change = i-1;
break;
}
}
for(int i = change + 1;i< nums.size();i++){
if(nums[i] >=nums[change] ){
if(nums[i+1]<=nums[change]){
swap(nums,i,change);
break;
}
else if(i+1 == nums.size()){
swap(nums,i,change);
break;
}
}
}
if(nums == origin){
sort(nums.begin(),nums.end());
}
for(int i = 0;i<nums.size();i++){
cout<<nums[i];}
}
};
使用迭代方法。