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