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
}
```
版权声明: 本文为 InfoQ 作者【Lee Chen】的原创文章。
原文链接:【http://xie.infoq.cn/article/9569b45149c9c94a168846668】。文章转载请联系作者。
评论