颜色分类
https://leetcode.cn/problems/sort-colors/submissions/ (opens new window) 标签 需要注意的点
- 两种指针方式,一种是取0和1,另一种是取0,2
- nums[i] 需要进行交换
- 注释写一些test case
- 解法1,参考https://www.bilibili.com/video/BV1Jg411M7Lp?spm_id_from=333.337.search-card.all.click&vd_source=e8e1b6de93e68d8ce8ab44afe5802a40 (opens new window)
class Solution:
def sortColors(self, nums: List[int]) -> None:
"""
Do not return anything, modify nums in-place instead.
"""
'''
2,0,2,1,1,0
,0,1,1,2,2,0
'''
p0,p2 = 0, len(nums)-1
i = 0
while i <= p2:
if nums[i] == 0:
self.swap(nums, i, p0)
i+=1
p0+=1
elif nums[i] == 1:
i+=1
else:
self.swap(nums,i, p2)
p2 -=1
def swap(self, nums, index1, index2):
nums[index1],nums[index2] = nums[index2],nums[index1]
class Solution:
def sortColors(self, nums: List[int]) -> None:
"""
Do not return anything, modify nums in-place instead.
"""
'''
1,0,1,2,0
0,0,0,1,2,0
'''
size = len(nums)
p0, p1 = 0, 0
for i in range(size):
if nums[i] == 1:
nums[i], nums[p1] = nums[p1], nums[i]
p1 += 1
if nums[i] == 0:
nums[i], nums[p0] = nums[p0], nums[i]
if p0 < p1:
nums[i], nums[p1] = nums[p1], nums[i]
p0 += 1
p1 += 1