349.两个数组的交集

    科技2024-04-08  87

    给定两个数组,编写一个函数来计算它们的交集。

     

    示例 1:

    输入:nums1 = [1,2,2,1], nums2 = [2,2] 输出:[2]

    示例 2:

    输入:nums1 = [4,9,5], nums2 = [9,4,9,8,4] 输出:[9,4]

     

    说明:

    输出结果中的每个元素一定是唯一的。我们可以不考虑输出结果的顺序。

    思考

    这道题思路很简单,遍历nums2,看里面的元素在nums1里面有没有就可以了,有的话就放到一个集合里。

    但注意,判断在不在nums1里,如果是在数组中搜索,那么复杂度是O(n)。如果在map或者set里判断有没有,复杂度是O(1).

    所以先要把num1转换成集合set.

    这里可以新建一个集合,遍历nums1用set.add()一个个添加,也可以用新方法直接生成。 


    代码实现

    /** * @param {number[]} nums1 * @param {number[]} nums2 * @return {number[]} */ var intersection = function(nums1, nums2) { let set = new Set(nums1) let result = new Set() // let set = new Set() // for (let i = 0; i < nums1.length; i++) { // set.add(nums1[i]) // } for (let i = 0; i < nums2.length; i++) { if (set.has(nums2[i])) { result.add(nums2[i]) } } return Array.from(result) };

     


    知识

    1.用数组直接生成集合,在Set里面添加数组参数。

    let set = new Set(nums1)

    2.将set转换为数组

    Array.from(result)

     

    3.一开始写的代码很复杂,先判断在不在集合里面,不在再往里面添加。

    其实就一直向里面添加就好了,集合会自己去重的。 

    Processed: 0.037, SQL: 9