Leetcode 75. 颜色分类 Python3实现
最简单也是最好理解的单指针实现,添加了详细的注释,方便日后复习,也希望可以帮到其他人,如有错误请指正!
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