LeetCode Hot 100:移动零

用 fast 扫描、slow 写入讲清移动零:原地保留非零元素顺序,尾部补零,并给出 JavaScript 实现。

本期讲 LeetCode Hot 100 里的「移动零」。这题要求在原数组中把所有 0 移到末尾,同时保持非零元素的相对顺序,适合用「扫描指针 + 写入指针」来处理。
核心思路:fast 从左到右扫描数组;遇到非零元素时,把它写到 slow 指向的位置,然后 slow 后移。扫描结束后,slow 左边就是稳定收集好的非零区,再把 slow 之后的位置补成 0
function moveZeroes(nums) {
  let slow = 0;

for (let fast = 0; fast < nums.length; fast++) {
    if (nums[fast] !== 0) {
      nums[slow] = nums[fast];
      slow++;
    }
  }

for (; slow < nums.length; slow++) {
    nums[slow] = 0;
  }
}
时间复杂度是 O(n),额外空间复杂度是 O(1)
来源:

Related content

  • Sign in to comment.
More from this channel