Задача с собеседования в Яндекс
Дан вектор, надо удалить из него нули, сохранив порядок остальных элементов. Интересует как с использованием стандартных средств, так и без них.
наш чат алгоритмистов
Решение:
Линейно пройдемся по элементам массива, поддерживая указатель на записываемый элемент. Затем удалим лишние индексы
def remove_zeros(arr):
write = 0
for read in range(len(arr)):
if arr[read] != 0:
arr[write] = arr[read]
write += 1
# обрезаем хвост (если надо)
del arr[write:]
Асимптотика O(N)
@algoses
Post #404
9.05K
- 😁 21
- ❤ 6
- 👏 1