js方法实现求两个数组的交集
/**
* 给定两个数组,写一个方法来计算它们的交集。
* 示例 1:
*
* 输入:nums1 = [1,2,2,1], nums2 = [2,2]
* 输出:[2,2]
* 复制代码
* 示例 2:
*
* 输入:nums1 = [4,9,5], nums2 = [9,4,9,8,4]
* 输出:[4,9]
* 哈希表,时间复杂度 O(m + n) m 为 nums1 长度,n 为 nums2 长度
*/
{ // js的实现方法 //判断A是否包含在b里面 // 包含就返回true,不包含就返回false
let nums1 = [1,9, 2, 1], nums2 = [2,9]
function intersect(num1, num2) {
let array = [];
array = num1.filter(function (item) {
return num2.includes(item)
})
console.log(array)
}
intersect(nums1, nums2)
}
js原生数据结构实现求两个数组的交集
{
function intersect(nums1, nums2) {
const map = {};
let res = []
for (let item of nums1) {
//把nums1放到map里面
if (map[item]) {
map[item]++;
} else {
map[item] = 1;
}
}
for (let item of nums2) {
//满足条件,说明有交集,说明num2的元素在num1中能找到,找到了就放置到新数组当中
if (map[item] > 0) {
res.push(item);
//找到之后- 1 操作,再次进来的时候如果为0,说明是num2独有的,如果再次进来还不为零,说明num2,num2数组中至少有两个相同相等的数据[]
map[item]--
}
}
return res;
}
let nums1 = [1,9, 2, 2,1], nums2 = [2,9,2]
console.log(intersect(nums1,nums2))
}