最简单也是最好理解的单指针实现,添加了详细的注释,方便日后复习,也希望可以帮到其他人,如有错误请指正!
class Solution: def sortColors(self, nums: List[int]) -> None: """ Do not return anything, modify nums in-place instead. """ # 单指针,两次遍历 pre = 0 # 遍历第一次是为了将0全部放到列表的头部 for i in range(len(nums)): if nums[i] == 0: # 当i索引的值等于0时,将其换到列表头部的位置,并将头部的元素换到i索引处 # 也可以使用临时变量进行交换 nums[i],nums[pre] = nums[pre],nums[i] # 头索引向后移动 pre += 1 # 遍历第二次是为了将元素值为1全部放到列表的头部,交换原理与前面的循环相同,第二次遍历结束后,值为2的元素已经排在列表的最尾部了 for j in range(pre,len(nums)): if nums[j] == 1: nums[j],nums[pre] = nums[pre],nums[j] pre += 1