75. 颜色分类
75. 颜色分类 #初步想法,不要求用sort,那么分别记录012的个数在构造数组 class Solution: def sortColors(self, nums: List[int]) -> None: """ Do not return anything, modify nums in-place instead. """ count_0=count_1=count_2=0 for i in nums: if i==0: count_0+=1 elif i==1: count_1+=1 else: count_2+=1 nums_=[] for i in range(count_0): nums_.append(0) for i in range(count_1): nums_.append(1) for i in range(count_2): nums_.append(2) print(nums_) return nums_ #虽然结果是对的,但要求更改原数组,所以这相当偷巧 --- #单指针,先把0调到最前方,再调节1的位置,交换使用r1记录0结束1开始的位置 class Solution: def sortColors(self, nums: List[int]) -> None: """ Do not return anything, modify nums in-place instead. """ r1, i, n = 0, 0, len(nums) # 第一步:通过交换 使得nums[0,...,r1-1]都是0 while i<n: if nums[i]==0: nums[r1], nums[i]=nums[i], nums[r1] r1+=1 i+=1 # 第二步:通过交换 使得nums[r1,...,r2-1]都是1 r2, i = r1, r1 while i<n: if nums[i]==1: nums[r2], nums[i]=nums[i], nums[r2] r2+=1 i+=1 return nums ---