原地移动 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
- 如果 L[i] 与 0 不同,那么
- 对于 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]
广告