Назад к вопросам
СБЕР
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).