【javascript算法 力扣刷题 两个数组的交集(简单)】

289 阅读1分钟

本文讲述的是力扣第349题:两个数组的交集。

这个题目的要求是两个数组之间的交集,并且需要的是一个无重复的数组,所以需要一个set数据结构。 但是最后如何转成一个数组输出出去,则需要用到一个Array.from(Set)的方法解决这个问题。

那么我们来看一下下方代码的解决方式。

var intersection = function(nums1, nums2) {

  //考虑到题目需要返回的结果是交集,而且是不重复的交集,果断把res定义为set

  const res = new Set()

  if(nums1 === [] || nums2 === []){

    return []

  }

  //这就来尝试一下把nums2转化为set的方式

  const set = new Set(nums2)

  for(num of nums1){

    //nums2.includes这个方法是对一个值的查找的时间复杂度是o(n)

    //如果能把nums2转化为set,并用set.has(?)来判断,时间复杂度可以缩减为o(1)。

    if(nums2.includes(num)){

    //if(set.has(num)){

      res.add(num)

    }

  }

  //Array.from也是将set数据结构转化为数组的其中一个方法。

  return Array.from(res)

};