首页 > 解决方案 > 将零更改为数组中最近的左侧非零邻居

问题描述

假设我有一个数组:

[1, 0, 0, 2, 0, 0, 0, 0, 3, 0, 0, 0, 4, 0, 0, 1, 0, 0, 0, 2]

如何将零更改为其最近的左侧非零邻居的值?

[1, 1, 1, 2, 2, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 1, 1, 1, 1, 2]

标签: python

解决方案


l=[1, 0, 0, 2, 0, 0, 0, 0, 3, 0, 0, 0, 4, 0, 0, 1, 0, 0, 0, 2]
arr=[]
for i in l:
    if i!=0:
        arr.append(i)
        left_element=i 
    else:
        arr.append(left_element)
print(arr)

跟踪非零左元素并将其附加到新列表空间:-O(n)运行时:-O(n)

或者

l=[1, 0, 0, 2, 0, 0, 0, 0, 3, 0, 0, 0, 4, 0, 0, 1, 0, 0, 0, 2]
for i in range(len(l)):
    if l[i]!=0:
        left_element=l[i]
    else:
        l[i]=left_element
print(l)

推荐阅读