假设我们有一个包含n个对象的数组。这些颜色是红色,白色或蓝色,将它们分类就位,以使相同颜色的对象相邻。因此,颜色按红色,白色和蓝色的顺序排列。在这里,我们将使用数字0、1和2分别代表红色,白色和蓝色。因此,如果数组类似于[2,0,2,1,1,0],则输出将为[0,0,1,1,2,2]
为了解决这个问题,我们将遵循以下步骤-
设置低:= 0,中:= 0,高:=数组长度– 1
而中期<=高
如果arr [mid] = 0,则交换arr [mid]和arr [low],并将low和mid增加1
否则,当arr [mid] = 2时,交换arr [high]和arr [mid],将high减1
否则增加1
让我们看下面的实现以更好地理解-
class Solution(object): def sortColors(self, nums): low = 0 mid = 0 high = len(nums)-1 while mid<=high: if nums[mid] == 0: nums[low],nums[mid] = nums[mid],nums[low] low+=1 mid += 1 elif nums[mid] == 2: nums[high], nums[mid] = nums[mid], nums[high] high-=1 else: mid += 1 return nums ob1 = Solution()print(ob1.sortColors([2,0,2,1,1,0]))
[2,0,2,1,1,0]
输出结果
[0,0,1,1,2,2]