力扣刷题day2——颜色分类

力扣刷题day2——颜色分类_第1张图片

双指针p0=0和p2=n-1,遍历数组,当前nums[i]==0和p0交换,p0 += 1.等于2则和 p2 交换,

p2 -= 1. 注意到 p2移动后指向可能依然为2,因此需要移动到不为2的位置,i不满足小于p2时,迭代终止

class Solution:
    def sortColors(self, nums: List[int]) -> None:
        """
        Do not return anything, modify nums in-place instead.
        """
        n = len(nums)
        p0, p2 = 0, n-1
        i=0
        while i <= p2:
            while i <= p2 and nums[i] == 2:
                nums[i], nums[p2] = nums[p2], nums[i]
                p2 -= 1
            if nums[i] == 0:
                nums[i], nums[p0] = nums[p0], nums[i]
                p0 += 1
            i += 1

你可能感兴趣的:(leetcode,分类,算法)