给定一个包含红色、白色和蓝色,一共 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