下一个排列

class Solution {
public:
    void nextPermutation(vector<int>& nums) {
        if(nums.size()<=1) return;

        int i=nums.size()-2;
        while(i>=0 && nums[i]>=nums[i+1]){
            i-=1;
        }

        if(i==-1){
            reverse(nums.begin(),nums.end());
            return;
        }

        int j=nums.size()-1;
        while(j>=0 && nums[j]<=nums[i]){
            j-=1;
        }

        int tmp=nums[i];
        nums[i]=nums[j];
        nums[j]=tmp;

        reverse(nums.begin()+i+1,nums.end());
        return;
    }
};

 

posted @ 2020-03-07 17:44  7aughing  阅读(108)  评论(0编辑  收藏  举报