leetcode-75-颜色分类
题目描述:
方法一:
class Solution: def sortColors(self, nums: List[int]) -> None: """ Do not return anything, modify nums in-place instead. """ p0 = curr = 0 # 对于所有 idx > p2 : nums[idx > p2] = 2 p2 = len(nums) - 1 while curr <= p2: if nums[curr] == 0: nums[p0], nums[curr] = nums[curr], nums[p0] p0 += 1 curr += 1 elif nums[curr] == 2: nums[curr], nums[p2] = nums[p2], nums[curr] p2 -= 1 else: curr += 1
优化:
class Solution: def sortColors(self, nums: List[int]) -> None: """ Do not return anything, modify nums in-place instead. """ i,j = 0,len(nums)-1 k = 0 while k <= j: while nums[k] == 2 and j > k: nums[k],nums[j] = nums[j],nums[k] j -= 1 while nums[k] == 0 and k > i: nums[k],nums[i] = nums[i],nums[k] i += 1 k += 1