75. 颜色分类

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

解法一:

一次遍历,将2分别放到右侧,将0分别放到左侧,1自然就在中间。

class Solution:
    def sortColors(self, nums: List[int]) -> None:
        """
        Do not return anything, modify nums in-place instead.
        """
        n = len(nums)
        zero, second = 0, n-1  #0和2的初始位置
        for i in range(n):
            while nums[i] == 2 and i < second:  #遇到2,将其放到合适位置
                nums[i], nums[second] = nums[second], nums[i]
                second -= 1 #2的分界点前移
            while nums[i] == 0 and i > zero:  #遇到0,将其放到合适位置
                nums[i], nums[zero] = nums[zero], nums[i]
                zero += 1  #0的分界点后移

最后更新于