美文网首页
leetcode算法练习- 移动零

leetcode算法练习- 移动零

作者: 土豪码农 | 来源:发表于2019-03-26 22:23 被阅读0次

    第一次提交

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

    相关文章

      网友评论

          本文标题:leetcode算法练习- 移动零

          本文链接:https://www.haomeiwen.com/subject/lsjovqtx.html