Skip to content

Latest commit

 

History

History
38 lines (34 loc) · 1.12 KB

283-移动零.md

File metadata and controls

38 lines (34 loc) · 1.12 KB

题目描述

移动零

题目简述

给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。

示例:

  • 输入: [0,1,0,3,12]
  • 输出: [1,3,12,0,0]

分类

简单 双指针

思路

思路1

/**
 * @param {number[]} nums
 * @return {void} Do not return anything, modify nums in-place instead.
 */
var moveZeroes = function(nums) {
  let len = nums.length
  for (let i = 0; i < len; i ++) {
    if (nums[i] === 0) {
      nums.splice(i, 1)
      nums.push(0)
      i --
      len --
    }
  }
};
  • 问题分析
    • 从头到尾遍历整个数组,当前位置为ilen = nums.length,遍历的进行条件为i < len
    • 当找到一个元素为0时,通过splice方法删除该元素,在末尾增加0。此时整个数组发生了位移,当前的位置被删除,变为了原本的下一个元素,所以我们这里要i --,以满足下一个元素为原本的元素。除此之外,还需要将len --,否则最终会遍历到移动到最后的0