Given an array nums, write a function to move all 0's to the end of it while maintaining the relative order of the non-zero elements.
Input: [0,1,0,3,12]
Output: [1,3,12,0,0]
- You must do this in-place without making a copy of the array.
- Minimize the total number of operations.
/**
* @param {number[]} nums
* @return {void} Do not return anything, modify nums in-place instead.
*/
var moveZeroes = function(nums) {
var zeroes = 0;
for (var i = 0; i < nums.length; i++) {
if (nums[i] === 0) {
nums.splice(i, 1);
i--;
zeroes++;
}
}
while (zeroes) {
nums.push(0);
zeroes--;
}
};
<?php
function moveZeroes(array $nums): array
{
$zeroes = 0;
$count = count($nums);
for ($i = 0; $i < $count; ++$i) {
if ($nums[$i] === 0) {
unset($nums[$i]);
$zeroes++;
}
}
while ($zeroes) {
$nums[] = 0;
--$zeroes;
}
return $nums;
}
var_dump(moveZeroes([0, 1, 0, 3, 12]));