在 Python 中对颜色进行排序

pythonserver side programmingprogramming更新于 2025/10/25 19:24:17

假设我们有一个包含 n 个对象的数组。这些对象的颜色为红色、白色或蓝色,对它们进行排序,使相同颜色的对象相邻。因此,颜色的顺序为红色、白色和蓝色。在这里,我们将使用 0、1 和 2 等数字分别表示红色、白色和蓝色。因此,如果数组为 [2,0,2,1,1,0],则输出将为 [0,0,1,1,2,2]

为了解决这个问题,我们将遵循以下步骤 −

  • 设置 low := 0、mid := 0 和 high := 数组长度 – 1
  • 当 mid <= high
    • 如果 arr[mid] = 0,则交换 arr[mid] 和 arr[low],并将 low 和 mid 增加 1
    • 否则当 arr[mid] = 2 时,交换 arr[high] 和 arr[mid],将 high 减少 1
    • 否则将 mid 增加 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]

相关文章


有用资源