Move zeroes to end
Playing with algorithms. Move zeroes to end array, while maintaining order of non-zero numbers. O(n) linear time, using singe loop.
by lasha
JavaScript
//var moveZeroes = [6,4,0,-4,0,1,3];
var moveZeroes = [0, 1, 0, 2, 0, 3, -4, 0];
//var moveZeroes = [1, 0, 1];
var second = -1;
for(var i = 0; i < moveZeroes.length; i++) {
if(moveZeroes[i] === 0){
if(second == -1 || moveZeroes[second] != 0){
second = i;
}
} else {
if(second > -1){
var temp = moveZeroes[i];
moveZeroes[second] = temp;
moveZeroes[i] = 0;
second++;
}
}
}
console.log(moveZeroes);