leetCode打卡——重插入法

186 阅读1分钟
No 题目名 难度 简短描述 数据结构
283 Move Zeroes 1 将数组中的0全部放在最后,类似题目27 数组

思路

  1. 遍历数组,声明一个插入下标,将不为0的数字插入到该下标处,然后插入下标自加;
  2. 由于数组中存在0,所以插入下标 < 数组长度 - 1,此时将后续的位置补0.

code


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--;
        }
    }
};
// 插入法
var moveZeroes2 = function(nums) {
    let len = nums.length;
    let insertPos = 0;

    for (let i = 0; i < len; i++) {
        if (nums[i] !== 0) {
            nums[insertPos++] = nums[i];
        }
    }
    for (let i = 0; i < len - insertPos; i++) {
        nums[len - 1 - i] = 0;
    }
};