思路:从后往前找到第一个nums[i-1]>nums[i] 然后从后往前(len-1 -->i(包含))找到第一个大于nums[i-1]的数,与nums[i-1]交换,然后对下标区间为[i,len-1]的元素进行排序。
class Solution {
public:
void nextPermutation(vector<int>& nums) {
int len=nums.size();
int i=0;
for( i=len-1;i>0;i--){
if(nums[i]>nums[i-1]){
break;
}
}
if(i==0){
sort(nums.begin(),nums.end());
}
else{
for(int j=len-1;j>=i;j--)
{
if(nums[j]>nums[i-1]){
swap(nums[j],nums[i-1]);
break;
}
}
sort(nums.begin()+i,nums.end());
}
}
};