LC 速查

HOT 100索引 › B17 技巧 Tricks

LC 75颜色分类Sort Colors 中等

原地排序只含 0、1、2 的数组,使所有 0 在前、所有 2 在后(荷兰国旗问题)。

思路 三指针:p0 指下一个 0 的位置、p2 指下一个 2 的位置,遇 2 换到尾部不前移 i,遇 0 换到头部并前移。一趟 O(n)。

class Solution:
    def sortColors(self, nums: List[int]) -> None:
        p0 = i = 0
        p2 = len(nums) - 1
        while i <= p2:
            if nums[i] == 0:
                nums[p0], nums[i] = nums[i], nums[p0]
                p0 += 1
                i += 1
            elif nums[i] == 2:
                nums[p2], nums[i] = nums[i], nums[p2]
                p2 -= 1
            else:
                i += 1
← 上一题 多数元素下一个排列 下一题 →