跳到主要内容

283.移动零

链接:283.移动零
难度:Easy
标签:数组、双指针
简介:给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。

题解 1 - typescript

  • 编辑时间:2020-11-19
  • 执行用时:96ms
  • 内存消耗:40.7MB
  • 编程语言:typescript
  • 解法介绍:遍历下标进行删除。
function moveZeroes(nums: number[]): void {
const indexes: number[] = [];
for (let i = 0, l = nums.length; i < l; i++) {
nums[i] === 0 && indexes.unshift(i);
}
indexes.forEach(v => nums.splice(v, 1));
nums.push(...new Array(indexes.length).fill(0));
}

题解 2 - typescript

  • 编辑时间:2020-11-19
  • 执行用时:104ms
  • 内存消耗:41.2MB
  • 编程语言:typescript
  • 解法介绍:双指针。
function moveZeroes(nums: number[]): void {
let left = 0;
let right = 0;
const len = nums.length;
const swap = (i1: number, i2: number) => ([nums[i1], nums[i2]] = [nums[i2], nums[i1]]);
while (right < len) {
if (nums[right] != 0) {
swap(left, right);
left++;
}
right++;
}
}