https://leetcode.com/problems/sort-colors/description/
将乱序的若干个0,1,2分组
思路:一次遍历,将2分别放到右侧,将0分别放到左侧,1自然就在中间。
class Solution:
def sortColors(self, nums):
"""
:type nums: List[int]
:rtype: void Do not return anything, modify nums in-place instead.
"""
n = len(nums)
zero, second = 0, n-1 #0和2的初始位置
for i in range(n):
while nums[i] == 2 and i < second: #遇到2,将其放到合适位置
nums[i], nums[second] = nums[second], nums[i]
second -= 1 #2的分界点前移
while nums[i] == 0 and i > zero: #遇到0,将其放到合适位置
nums[i], nums[zero] = nums[zero], nums[i]
zero += 1 #0的分界点后移