写点什么

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

用户头像
Lee Chen
关注
发布于: 2 小时前
LeetCode题解:80. 删除有序数组中的重复项 II,JavaScript,详细注释

原题链接:[80. 删除有序数组中的重复项 II](https://leetcode-cn.com/problems/remove-duplicates-from-sorted-array-ii/)

解题思路:

1. 使用哈希表统计每个数字出现的次数。

2. 使用指针`index`指向当前要填入数字的位置。

3. 次数小等于 2 时,将当前数字填入`index`位置,之后将`index`向后移动一位。

```javascript

/**

* @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

}

```

发布于: 2 小时前阅读数: 4
用户头像

Lee Chen

关注

还未添加个人签名 2018.08.29 加入

还未添加个人简介

评论

发布
暂无评论
LeetCode题解:80. 删除有序数组中的重复项 II,JavaScript,详细注释