350.两个数组的交集II
思路
对象解法
代码
/**
* 简单的哈希表解法
* 只需要存储数据到对象里面,然后再对 num2 进行遍历即可
* @param nums1
* @param nums2
* @returns
*/
export function intersect(nums1: number[], nums2: number[]): number[] {
const numObj: { [key: number]: number } = {}
let res: number[] = []
// 先调换位置,防止遍历 num1 存储到 map 的时候会遗漏
if (nums1.length < nums2.length) {
[nums1, nums2] = [nums2, nums1]
}
for (let i of nums1) {
if (numObj[i]) {
numObj[i]++
} else {
numObj[i] = 1
}
}
for (let i of nums2) {
const val = numObj[i]
if (val > 0) {
res.push(i)
numObj[i]--
}
}
return res
}