【笔记】两个数组的交集【算法】——js实现

Map是JavaScript中的一种数据结构,它可以用来存储键值对,并且可以根据键来快速查找对应的值。Map的特点如下:

  • 键可以是任意类型的值,包括对象和函数。
  • 键值对的顺序是按照插入顺序进行的。
  • 可以使用size属性获取Map中键值对的数量。
  • 可以使用set(key, value)方法向Map中添加键值对。
  • 可以使用get(key)方法根据键获取对应的值。
  • 可以使用has(key)方法检查Map中是否存在指定的键。
  • 可以使用delete(key)方法删除指定的键值对。
  • 可以使用clear()方法清空Map中的所有键值对。
示例 1:

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

输入: nums1 = [4,9,5], nums2 = [9,4,9,8,4]
输出: [4,9]
 intersect(nums1, nums2) {
  const map = new Map();
  const result = [];
  
  // 统计nums1中数字的频次
  for (let num of nums1) {
    if (map.has(num)) {
      map.set(num, map.get(num) + 1);
    } else {
      map.set(num, 1);
    }
  }
  
  // 在nums2中寻找相同数字,并减少对应的频次
  for (let num of nums2) {
    if (map.has(num) && map.get(num) > 0) {
      result.push(num);
      map.set(num, map.get(num) - 1);
    }
  }
  
  return result;
}

const nums1 = [1,2,2,1];
const nums2 = [2,2];
console.log(intersect(nums1, nums2)); // 输出 [2,2]

const nums3 = [4,9,5];
const nums4 = [9,4,9,8,4];
console.log(intersect(nums3, nums4)); // 输出 [4,9]

在示例代码中,我们使用Map来统计nums1中数字的频次。首先,我们创建了一个空的Map对象map。然后,我们遍历nums1数组,对于每个数字,如果map中已经存在该数字,则将其对应的频次加1;否则,将该数字添加到map中,并设置其频次为1。

在遍历nums2数组时,我们检查map中是否存在当前数字,并且该数字的频次大于0。如果满足条件,说明该数字在nums1nums2中都存在,并且还没有被完全匹配。我们将该数字添加到result数组中,并将其对应的频次减1。

最后,我们返回result数组作为结果。

来源:力扣(LeetCode)
链接:leetcode-cn.com/problems/in…
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值