在 Python 中就地将零移动到列表末尾

pythonserver side programmingprogramming更新于 2025/12/26 14:04:17

假设我们有一个数字列表 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
  • 对于范围从 0 到 L 大小的 i,执行
    • 如果 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]

相关文章


有用资源