"""解题思路:
1.荷兰分区问题,我们把数组分成四类:red, white, 未分类, blue。初始的时候都在未分类组里,只要白色指针小于蓝色指针,我们遍历数组
2.当白色指针是是红色的时候nums[white]==0,我们交换红色指针,并且两个指针同时+1
3.当白色指针是白色的时候,位置在正确位置,指针+1
4.当白色指针是蓝色的其他情况,则交换蓝色指针,并且,蓝色指针-1
“”“
class Solution(object):
def sortColors(self, nums):
"""
:type nums: List[int]
:rtype: None Do not return anything, modify nums in-place instead.
"""
red = 0
white = 0
blue = len(nums) - 1
while white <= blue:
if nums[white] == 0:
nums[red], nums[white] = nums[white], nums[red]
red += 1
white += 1
elif nums[white] == 1:
white += 1
else:
nums[blue], nums[white] = nums[white], nums[blue]
blue -= 1
2.当白色指针是是红色的时候nums[white]==0,我们交换红色指针,并且两个指针同时+1