第一次提交
第一次写了个递归,找到一个0删除一个并记录,最后再加回到数组里面
var moveZeroes = function(nums) {
const flag = loop(nums);
for (var i = 0; i < flag; i++) {
nums.push(0)
}
};
function loop(nums,flag = 0){
const index = nums.indexOf(0);
if(index!==-1){
nums.splice(index,1);
flag++;
return loop(nums, flag);
}else{
return flag
}
}
第二次提交
第二次提交是第一次的升级版,基本原理基本一致的,只不过利用nums.length去计算了到底有几个0
var moveZeroes = function (nums) {
var num = 0;
while (nums.indexOf(0) !== -1 && nums.indexOf(0) < (nums.length - 1 - num)) {
num++;
nums.splice(nums.indexOf(0), 1);
nums.push(0)
}
};
第三次提交
第三次利用了双指针,去记录到底有几个0
var moveZeroes = function(nums) {
var i=0, j=0;
for(; j<nums.length; j++) {
if(nums[j] !== 0) {
nums[i] = nums[j];
i++;
}
}
for (; i < j; i++) {
nums[i] = 0;
}
return nums;
};
网友评论