Sobes.tech
Назад к вопросам
Senior
7

Алгоритмическая задача: дан целочисленный массив, нужно переместить все нули в конец, сохранив порядок остальных элементов (например, [1,0,3,0,1] → [1,3,1,0,0])

Компании, где спрашивали
СБЕРСБЕР

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

sobes.tech AI

Задача — переместить все нули в конец массива, сохранив порядок остальных элементов. Решение можно сделать за один проход, используя два указателя.

Пример на Java:

public class MoveZeros {
    public static void moveZerosToEnd(int[] nums) {
        int insertPos = 0; // позиция для вставки ненулевого элемента
        
        for (int num : nums) {
            if (num != 0) {
                nums[insertPos++] = num;
            }
        }
        
        while (insertPos < nums.length) {
            nums[insertPos++] = 0;
        }
    }

    public static void main(String[] args) {
        int[] arr = {1, 0, 3, 0, 1};
        moveZerosToEnd(arr);
        for (int num : arr) {
            System.out.print(num + " ");
        }
        // Вывод: 1 3 1 0 0 
    }
}

Идея:

  • Проходим по массиву, копируем все ненулевые элементы в начало.
  • После этого заполняем оставшиеся позиции нулями.

Сложность: O(n), дополнительная память: O(1).