[面试记录]记录字节一面算法题:下一个排列
原题是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
}
}
};

浙公网安备 33010602011771号