-
Notifications
You must be signed in to change notification settings - Fork 86
Open
Description
原题链接:80. 删除有序数组中的重复项 II
解题思路:
- 使用哈希表统计每个数字出现的次数。
- 使用指针
index
指向当前要填入数字的位置。 - 次数小等于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
Labels
No labels