https://leetcode-cn.com/problems/intersection-of-two-arrays/
点击查看【bilibili】

题目

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

示例

  1. 输入:nums1 = [1,2,2,1], nums2 = [2,2]
  2. 输出:[2]
  3. 输入:nums1 = [4,9,5], nums2 = [9,4,9,8,4]
  4. 输出:[9,4]

解答

考虑保证不重复,要用set

答案

  1. var intersection = function(nums1, nums2) {
  2. const result = new Set()
  3. for(num of nums1) {
  4. // includes 嵌套循环 数组搜索值,复杂度O(n)
  5. // Set Map - has 复杂度O(1)
  6. if(nums2.includes(num)) {
  7. result.add(num)
  8. }
  9. }
  10. return Array.from(result)
  11. };

优化

var intersection = function(nums1, nums2) {
  const result = new Set()
  const set = new Set(nums2)

  for(num of nums1) {
    if(set.has(num)) {
      result.add(num)
    }
  }
  return Array.from(result)
};