Sobes.tech
Middle — Senior
22

Как реализовать алгоритм подсчёта и сдвига нулей в массиве на Python?

Компании, где спрашивали
Магнит

Ответ от нейросети

sobes.tech AI

Для подсчёта количества нулей и сдвига всех нулей в конец массива на Python можно использовать следующий алгоритм:

  1. Пройти по массиву и скопировать все ненулевые элементы в начало.
  2. Заполнить оставшиеся позиции нулями.

Пример реализации:

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) по дополнительной памяти.