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)