SprintCode.pro

Подготовка к алгоритмическим задачам

Super

Move Zeroes (Перемещение нулей)

Описание: Дан массив nums. Переместите все нули в конец массива, сохранив относительный порядок остальных элементов. Верните изменённый массив.

Пример 1:

Вход: nums = [0,1,0,3,12]
Выход: [1,3,12,0,0]
Объяснение: Ненулевые элементы сохранили порядок

Пример 2:

Вход: nums = [1,2,3]
Выход: [1,2,3]
Объяснение: Нулей нет, массив не меняется

Ограничения:

1 <= nums.length <= 10⁴

-2³¹ <= nums[i] <= 2³¹ - 1

Рекомендуемая временная и пространственная сложность

Стремитесь к решению за O(n) по времени и O(1) по памяти — без создания нового массива.


Подсказка 1

Создать новый массив просто, но условие просит менять на месте.


Подсказка 2

Заведите указатель на позицию, куда нужно записать следующий ненулевой элемент.


Подсказка 3

Пройдите массив, перенося все ненулевые элементы в начало. Затем заполните хвост нулями.

Задача на технику двух указателей. Учит преобразовывать массив на месте без дополнительной памяти, сохраняя относительный порядок элементов.

Входные параметры :

[0,1,0,3,12]

Ожидаемый результат

[1,3,12,0,0]