Skip to content

LeetCode题解:80. 删除有序数组中的重复项 II,JavaScript,详细注释 #360

@chencl1986

Description

@chencl1986

原题链接:80. 删除有序数组中的重复项 II

解题思路:

  1. 使用哈希表统计每个数字出现的次数。
  2. 使用指针index指向当前要填入数字的位置。
  3. 次数小等于2时,将当前数字填入index位置,之后将index向后移动一位。
/**
 * @param {number[]} nums
 * @return {number}
 */
var removeDuplicates = function (nums) {
  let map = new Map() // 使用哈希表统计每个数字的数量
  let index = 0 // 用一个指针,指向当前填入合法数字的位置

  // 遍历数组,将出现不超过2次的数字填入相应位置
  for (let i = 0; i < nums.length; i++) {
    // 统计当前出现数字的次数
    map.set(nums[i], map.has(nums[i]) ? map.get(nums[i]) + 1 : 1)

    // 如果当前次数不超过2,将当前数字存入index的位置,之后将index加1,移动到下一个位置
    if (map.get(nums[i]) <= 2) {
      nums[index++] = nums[i]
    }
  }

  // 退出循环时,index的值等于当前新长度
  return index
}

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions