Leetcode:349. 两个数组的交集

183 阅读1分钟

力扣题目链接

题意:

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

image.png

思路:

  • 交集是集合,没有重复元素。先把数组去重,再来算交集
  • 遍历长度更短的集合,可以提高效率。
  • 在遍历第一个集合的里面来进行判断
/**
 * @param {number[]} nums1
 * @param {number[]} nums2
 * @return {number[]}
 */
const set_intersection = (set1,set2)=>{
    //根据数组大小交换操作的数组,选择较小的集合
    if(set1.size > set2.size){
        return set_intersection(set2,set1)
    }
    //创建一个保存交集的集合
    const intersection = new Set()
    //遍历较小的集合,判断其中的每个元素是否在另一个集合中
    for (const num of set1){
        //若元素也在另一个集合中,则将元素添加到返回值
        if (set2.has(num)){
            intersection.add(num)
        }
    }
    //将集合以数组形式返回
    return [...intersection]

}
var intersection = function(nums1, nums2) {
//使用两个集合分别存储两个数组中的元素
const set1 = new Set(nums1)
const set2 = new Set(nums2)
return set_intersection(set1,set2)

};