题目链接:https://leetcode-cn.com/problems/sort-colors/
难度:中等
描述:
给定一个包含红色、白色和蓝色、共n个元素的数组nums,原地对它们进行排序,使得相同颜色的元素相邻,并按照红色、白色、蓝色顺序排列。
我们使用整数0、1和2分别表示红色、白色和蓝色。
必须在不使用库的sort函数的情况下解决这个问题。
提示:
数组大小:[1, 300]
题解
思路:按照三向切分快速排序中partition那样切分
class Solution:def sortColors(self, nums: List[int]) -> None:left, right, i = -1, len(nums)-1, 0while i <= right:if nums[i] == 0:left += 1nums[left], nums[i] = nums[i], nums[left]i += 1elif nums[i] == 1:i += 1else:nums[i], nums[right] = nums[right], nums[i]right -= 1
