Алгоритм на 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()
замечание:
Не совсем понимаю, как это реализовать.
