Day22: [LeetCode中等] 31.下一个排列

Day22: [LeetCode中等] 31.下一个排列

题源:

来自leetcode题库:

https://leetcode-cn.com/problems/next-permutation/

思路:

很有意思的一道题,代码简单,难的是思维的过程。想知道的去看题解吧,懒得说了(哈哈,我这博客好随意)。

代码:

dirty code凑合看吧

class Solution {
public:
    void nextPermutation(vector<int>& nums) {
        int Len=nums.size();
        if(Len==0||Len==1) return;
        int i=Len-2;
        bool success=false;
        for(;i>=0;i--){
            int x=nums[i];
            int min=INT_MAX;
            int min_flag=-1;
            for(int j=i+1;j<Len;j++){
                if(nums[j]>x) {
                    success=true;
                    if(min>nums[j]){
                        min=nums[j];
                        min_flag=j;
                    }
                }
            }
            if(success){
                int temp=nums[i];
                nums[i]=nums[min_flag];
                nums[min_flag]=temp;
                sort(nums.begin()+i+1,nums.end());
                return;
            }
        }
        sort(nums.begin(),nums.end());
        return;
    }
};
发布了49 篇原创文章 · 获赞 13 · 访问量 527

猜你喜欢

转载自blog.csdn.net/qq2215459786/article/details/103190414