用Python对颜色排序

假设我们有一个包含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

示例(Python)

让我们看下面的实现以更好地理解-

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]