Алгоритм на Python(ближайший ноль)

Прохожу курсы по Python, стоит задача по поиску расстояния до ближайшего нуля.

Формат ввода

В первой строке дана длина улицы —– n (1 ≤ n ≤ 106). В следующей строке записаны n целых неотрицательных чисел — номера домов и обозначения пустых участков на карте (нули). Гарантируется, что в последовательности есть хотя бы один ноль. Номера домов (положительные числа) уникальны и не превосходят 109.

Формат вывода

Для каждого из участков выведите расстояние до ближайшего нуля. Числа выводите в одну строку, разделяя их пробелами.

ввод:

5
0 1 4 9 0

вывод:

0 1 2 1 0

код работает, но есть замечания

def take_distance(n, array): 
    forward = [n] * n 
    backward = [n] * n 

    for i, v in enumerate(array): 
        if v == 0: 
            forward[i] = 0 
        else: 
            forward[i] = forward[i - 1] + 1 

    for i, v in enumerate(array[::-1]): 
        if v == 0: 
            backward[i] = 0 
        else: 
            backward[i] = backward[i - 1] + 1 

    return map(min, zip(forward, reversed(backward))) 



def main(): 
    n = int(input()) 
    array = [int(k) for k in input().split()] 
    print(*take_distance(n, array)) 
 
 
if __name__ == '__main__': 
    main() 

замечание:

замечание

Не совсем понимаю, как это реализовать.


Ответы (0 шт):