[面试记录]记录字节一面算法题:下一个排列

原题是lc31题力扣中等难度,当时写的时候空间复杂度没处理好,用的是cpp的sort函数,应该用reverse的
面试官评价,勉强通过,感觉非常的不情愿,个人觉得主要是面试环境有点小紧张,否则可以处理好一些细节问题

class Solution {
public:
    void nextPermutation(vector<int>& nums) {
        int k = nums.size() - 1;
        while(k > 0 && nums[k - 1] >= nums[k]) k --;
        //k 是转折点
        if(k <= 0) {
            reverse(nums.begin(), nums.end());
        } else {
            int t = k;
            while(t < nums.size() && nums[t] > nums[k - 1]) t ++;
            swap(nums[k - 1], nums[t - 1]);
            reverse(nums.begin() + k, nums.end());//当时用的是reverse
        }
    }
};
posted @ 2020-12-24 16:58  herrhu  阅读(111)  评论(0)    收藏  举报