Python 中的對顏色進行排序


假設我們有一個包含 n 個物件的陣列。這些物件被染成了紅色、白色或藍色,請對它們進行就地排序,以便同顏色的物件相鄰。顏色按紅、白、藍的順序。這裡,我們將使用 0、1 和 2 分別表示紅色、白色和藍色。因此,如果陣列為 [2,0,2,1,1,0],則輸出將為 [0,0,1,1,2,2]

要解決這個問題,我們將遵循以下步驟 −

  • 設定低 := 0、中 := 0 和高 := 陣列長度 – 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]

更新於:2020 年 4 月 27 日

2K+ 瀏覽量

開啟您的 職業生涯

透過完成課程獲得認證

開始
廣告
© . All rights reserved.