【发布时间】:2019-03-12 10:02:46
【问题描述】:
我有一个包含整数的 n 个元素的固定大小数组。我想将所有非零值放在数组的右侧。
例子:
[1, 0, 0, 4] => [0, 0, 1, 4]
[2, 0, 4, 3] => [0, 2, 4, 3]
[1, 0, 0] => [0, 0, 1]
执行此操作的简单算法是什么?
这是我目前拥有的,但它只会将索引处的元素向右移动
def slide(arr):
i = len(arr) - 2
while i >= 0:
if arr[i] != 0 and arr[i + 1] == 0:
arr[i + 1] = arr[i]
arr[i] = 0
i -= 1
print(arr)
【问题讨论】:
-
您为实现这一目标做了什么尝试?
-
是否需要保留元素的相对顺序?
-
@Aemyl 我尝试向后循环并检查 array[index + 1] 是否为零。如果是,那么我将 array[index + 1] 分配给 array[index]。然而,使用这种方法,我只在一个索引处移动元素
-
@sebastian 是的,保持元素的顺序非常重要
-
@Aemyl。哎呀,对不起。给你