给定一个包含红色、白色和蓝色,一共 n 个元素的数组,原地对它们进行排序,使得相同颜色的元素相邻,并按照红色、白色、蓝色顺序排列。
此题中,我们使用整数 0、 1 和 2 分别表示红色、白色和蓝色。
双指针法,中轴排序也用到了同样的方法。
from typing import * class Solution: def sortColors(self, nums: List[int]) -> None: """ Do not return anything, modify nums in-place instead. """ n = len(nums) p0, p1 = 0, 0 for i in range(n): if nums[i] == 0: nums[p0], nums[i] = nums[i], nums[p0] if p0 < p1: nums[p1], nums[i] = nums[i], nums[p1] p1 += 1 p0 += 1 elif nums[i] == 1: nums[p1], nums[i] = nums[i], nums[p1] p1 += 1