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

示例一

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

示例二

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

说明:

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

思路:直接上ES6+的API,用一个Set来存储结果(保证重复添加进去的也是唯一的),遍历数组1,利用indexOf查看数组2有没有,有就暴力的添加进Set里面,最后将Set转成数组返回。在这其中,判断数组二有没有当前遍历元素尝试用过includes,但是性能并不如直接的indexOf,同时,循环也用过forEach,但是尝试之后发现直接for循环的性能的速度高一点。

代码实现:

/**
 * @param {number[]} nums1
 * @param {number[]} nums2
 * @return {number[]}
 */
var intersection = function(nums1, nums2) {
    let res = new Set()
    for (let i = 0; i < nums1.length; i++) {
        if (nums2.indexOf(nums1[i]) > -1) {
            res.add(nums1[i])
        }
    }
    return [...res]
};