leetcode-31. 下一个排列

 

 

class Solution {
public:
    void nextPermutation(vector<int>& nums) {
        int len = nums.size();
        for(int i = len-1; i > 0 ; i--){
            if(nums[i]> nums[i-1]){
                sort(nums.begin()+i, nums.end());
                // 定位到以后,对i以及后面的进行排序,排序完只需要知道第一个比nums[i-1]大的数即可
                // 这个数是比nums[i-1]大最小的数
                // if(nums[len-1])
                for(int j = i; j < len; j++){
                    if(nums[j]>nums[i-1]){
                        int tmp = nums[j];
                        nums[j] = nums[i-1];
                        nums[i-1] = tmp;
                        return;
                    }
                }

             }        
        }
        sort(nums.begin(),nums.end());
        return;
    }
};

 

posted @ 2021-07-15 19:09  三一一一317  阅读(30)  评论(0)    收藏  举报