// Временная сложность: O(n)// Пространственная сложность: O(1)var moveZeroes = function(nums) { let writeIndex = 0; // позиция для записи ненулевого элемента // Первый проход: копируем все ненулевые элементы в начало for (let i = 0; i < nums.length; i++) { if (nums[i] !== 0) { nums[writeIndex] = nums[i]; writeIndex++; } } // Второй проход: заполняем оставшиеся позиции нулями for (let i = writeIndex; i < nums.length; i++) { nums[i] = 0; } return nums;};
Решение 2 (один проход)
// Временная сложность: O(n)// Пространственная сложность: O(1)var moveZeroes = function(nums) { let writeIndex = 0; for (let i = 0; i < nums.length; i++) { if (nums[i] !== 0) { // Меняем местами текущий элемент с позицией writeIndex [nums[writeIndex], nums[i]] = [nums[i], nums[writeIndex]]; writeIndex++; } } return nums;};