求两个数组的交集

88 阅读1分钟

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))
}