LeetCode 75

https://leetcode.cn/problems/sort-colors/description/

难度:中等

高频面试题汇总:https://www.yuweihung.com/posts/2025/lc-hot/

O(1) 插入元素 不是插入元素,而是修改元素!

维护 a 中 0 的个数,即改为 0 的位置,记作 p0。维护 a 中 0 和 1 的个数,即改为 1 的位置,记作 p1。

首先将 x 改为 2,如果 x <= 1,nums[p1++] = 1,如果 x == 0,nums[p0++] = 0。

时间复杂度:O(n),其中 n 是 nums 的长度。

空间复杂度:O(1)。

class Solution {
public:
    void sortColors(vector<int>& nums) {
        int p0 = 0, p1 = 0;
        for (int i = 0; i < nums.size(); i++) {
            int x = nums[i];
            nums[i] = 2;
            if (x <= 1) {
                nums[p1++] = 1;
            }
            if (x == 0) {
                nums[p0++] = 0;
            }
        }
    }
};