leetcode算法练习- 移动零

第一次提交

第一次写了个递归,找到一个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

你可能感兴趣的:(leetcode算法练习- 移动零)