75. 颜色分类
class Solution(object):
def sortColors(self, nums):
"""
:type nums: List[int]
:rtype: None Do not return anything, modify nums in-place instead.
"""
n = len(nums)
l, r = 0, n-1
for i in range(n):
if i > r or l > r:
break
while nums[i] == 2 and i <= r:
nums[i], nums[r] = nums[r], nums[i]
r -= 1
if nums[i] == 0:
nums[i], nums[l] = nums[l], nums[i]
l += 1
return nums
思路:
双指针。把所有可能的2先移到右边,然后开始移0。
综上,时间复杂度O(n),空间复杂度是O(1)。
注意点:
一开始想成了快排,但其实就3个数遍历一下就好了。