75. 颜色分类

75. 颜色分类

我们用三个指针(p0, p2 和curr)来分别追踪0的最右边界,2的最左边界和当前考虑的元素。本解法的思路是沿着数组移动 curr 指针,若nums[curr] = 0,则将其与 nums[p0]互换;若 nums[curr] = 2 ,则与 nums[p2]互换。

关键词:双指针,三指针,荷兰国旗问题

class Solution:
  def sortColors(self, nums) -> None:
      """
      Do not return anything, modify nums in-place instead.
      """
      lp = 0
      rp = len(nums)-1
      cp = 0

      while cp<=rp:
        if nums[cp]==2:
          nums[cp] = nums[rp]
          nums[rp] = 2
          rp -= 1
        elif nums[cp]==0:
          nums[cp] = nums[lp]
          nums[lp] = 0
          lp += 1
          cp += 1
        else:
          cp += 1

你可能感兴趣的:(75. 颜色分类)