80. 删除有序数组中的重复项 II
代码
javascript
// 80. 删除有序数组中的重复项 II:https://leetcode.cn/problems/remove-duplicates-from-sorted-array-ii/
// 输入:nums = [1,1,1,2,2,3]
// 输出:5
export function removeDuplicatesFromSortedArrayIi (nums) {
const map = new Map()
for (let i = 0; i < nums.length; i++) {
if (map.has(nums[i])) {
if (map.get(nums[i]) >= 2) {
nums.splice(i, 1)
i--
}
map.set(nums[i], map.get(nums[i]) + 1)
} else {
map.set(nums[i], 1)
}
}
return nums.length
}
typescript
// 80. 删除有序数组中的重复项 II:https://leetcode.cn/problems/remove-duplicates-from-sorted-array-ii/
// 输入:nums = [1,1,1,2,2,3]
// 输出:5
export function removeDuplicatesFromSortedArrayIi (nums: number[]): number {
const map = new Map()
for (let i = 0; i < nums.length; i++) {
if (map.has(nums[i])) {
if (map.get(nums[i]) >= 2) {
nums.splice(i, 1)
i--
}
map.set(nums[i], map.get(nums[i]) + 1)
} else {
map.set(nums[i], 1)
}
}
return nums.length
}
测试代码
ts
import { expect, test } from 'vitest'
import { removeDuplicatesFromSortedArrayIi } from './typescript.ts'
import { removeDuplicatesFromSortedArrayIi as removeDuplicatesFromSortedArrayIiJs } from './javascript.js'
test(`removeDuplicatesFromSortedArrayIi`, () => {
const nums = [1,1,1,2,2,3]
expect(removeDuplicatesFromSortedArrayIi(nums)).toBe(5)
expect(nums).toEqual([1,1,2,2,3])
const nums2 = [0,0,1,1,1,1,2,3,3]
expect(removeDuplicatesFromSortedArrayIi(nums2)).toBe(7)
expect(nums2).toEqual([0,0,1,1,2,3,3])
})
test(`removeDuplicatesFromSortedArrayIiJs`, () => {
const nums = [1,1,1,2,2,3]
expect(removeDuplicatesFromSortedArrayIiJs(nums)).toBe(5)
expect(nums).toEqual([1,1,2,2,3])
const nums2 = [0,0,1,1,1,1,2,3,3]
expect(removeDuplicatesFromSortedArrayIiJs(nums2)).toBe(7)
expect(nums2).toEqual([0,0,1,1,2,3,3])
})