Faaez Razeen

Sort Colors

  • 3 min read
  • Array
  • LC-Medium

3 years ago

Solution 1 (Two-Pass Bucket Sort)

TimeSpaceExplanation
O(n)O(1)
def sortColors(self, nums: List[int]) -> None: counts = Counter(nums) i = 0 for num in [0, 1, 2]: for _ in range(counts[num]): nums[i] = num i += 1

Solution 2 (One-Pass QuickSort Partition)

def sortColors(self, nums: List[int]) -> None: i, l, r = 0, 0, len(nums) - 1 while i <= r: if nums[i] == 0: nums[i], nums[l] = nums[l], nums[i] l += 1 elif nums[i] == 2: nums[i], nums[r] = nums[r], nums[i] r -= 1 i -= 1 i += 1