Skip to main content

349. 两个数组的交集 - Map解法

思路

直接用 map 来存储也行,其实 map 跟 Object 来写的话原理都是一样的

代码

function intersection(nums1: number[], nums2: number[]): number[] {
const result = []
const map = new Map()

nums1.forEach((v) => {
map.set(v, true)
})

nums2.forEach((v) => {
if (map.has(v)) {
result.push(v)
map.delete(v)
}
})

return result
}

复杂福分析

时间复杂度: 只有两次循环,准确的来说时间复杂度为两个数组的长度, O(M + N),经过忽略为 O(N)

空间复杂度: map 的最大的数量就为 N,输出的 res 是不算入复杂度计算的,所以为 O(N)