Middle — Senior
22
Как реализовать алгоритм подсчёта и сдвига нулей в массиве на Python?
Компании, где спрашивали
Магнит
Ответ от нейросети
sobes.tech AI
Для подсчёта количества нулей и сдвига всех нулей в конец массива на Python можно использовать следующий алгоритм:
- Пройти по массиву и скопировать все ненулевые элементы в начало.
- Заполнить оставшиеся позиции нулями.
Пример реализации:
from typing import List
def move_zeros(nums: List[int]) -> None:
"""Сдвигает все нули в конец массива, сохраняя порядок ненулевых элементов."""
insert_pos = 0
for num in nums:
if num != 0:
nums[insert_pos] = num
insert_pos += 1
# Заполняем остаток нулями
for i in range(insert_pos, len(nums)):
nums[i] = 0
# Пример использования
arr = [0, 1, 0, 3, 12]
move_zeros(arr)
print(arr) # Выведет: [1, 3, 12, 0, 0]
Этот алгоритм работает за O(n) по времени и O(1) по дополнительной памяти.