原地移動 Python 列表中的零到末尾


假設我們有一個數字列表 nums,我們必須透過就地更新列表將所有零放在列表的末尾。並且不應該更改其他元素的相對順序。我們必須嘗試在 O(1) 的額外空間中解決此問題。

因此,如果輸入類似於 [2,0,1,4,0,5,6,4,0,1,7],那麼輸出將是 [2, 1, 4, 5, 6, 4, 1, 7, 0, 0, 0]

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

  • 如果 L 的大小與 0 相同,那麼
    • 返回一個空列表
  • k := 0
  • 對於 i 在 0 到 L 的大小的範圍內,執行
    • 如果 L[i] 與 0 不同,那麼
      • L[k] := L[i]
      • k := k + 1
  • 對於 j 在 k 到 L 的大小的範圍內,執行
    • L[j] := 0
  • 返回 L

讓我們看看以下實現,以便更好地理解 −

示例

 實際演示

class Solution:
   def solve(self, L):
      if len(L) == 0:
         return []
         k = 0
         for i in range(len(L)):
            if L[i] != 0:
               L[k] = L[i]
               k+=1
         for j in range(k,len(L)):
            L[j] = 0
         return L
ob = Solution()
L = [2,0,1,4,0,5,6,4,0,1,7]
print(ob.solve(L))

輸入

[2,0,1,4,0,5,6,4,0,1,7]

輸出

[2, 1, 4, 5, 6, 4, 1, 7, 0, 0, 0]

更新於:23-Sep-2020

3K+ 瀏覽量

啟動你的 職業

完成課程並獲得認證

開始
廣告
© . All rights reserved.