前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >两个数组的交集II

两个数组的交集II

作者头像
WindrunnerMax
发布2020-08-27 16:41:12
1.2K0
发布2020-08-27 16:41:12
举报
文章被收录于专栏:Czy‘s BlogCzy‘s Blog

两个数组的交集II

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

示例

代码语言:javascript
复制
输入:nums1 = [1,2,2,1], nums2 = [2,2]
输出:[2,2]
代码语言:javascript
复制
输入:nums1 = [4,9,5], nums2 = [9,4,9,8,4]
输出:[4,9]

说明

  • 输出结果中每个元素出现的次数,应与元素在两个数组中出现次数的最小值一致。
  • 我们可以不考虑输出结果的顺序。

题解

代码语言:javascript
复制
/**
 * @param {number[]} nums1
 * @param {number[]} nums2
 * @return {number[]}
 */
var intersect = function(nums1, nums2) {
    var hashTable = {};
    var target = [];
    nums1.forEach(v => {
        if(hashTable[v]) hashTable[v]++;
        else hashTable[v] = 1;   
    })
    nums2.forEach(v => {
        if(hashTable[v] && hashTable[v] > 0) {
            hashTable[v]--;
            target.push(v);
        }
    })
    return target;
};

思路

本题使用哈希表的方式来解答,而Js中对象也是以HashTable进行存储的,便可以直接利用Js对象来实现哈希表,请注意题目要求结果中每个元素出现的次数应与元素在两个数组中出现次数的最小值一致,根据这个要求那么需要在哈希表中记录值出现的次数,首先定义一个HashTable用以记录值出现次数,然后定义目标数组,接着将第一个数组nums1进行遍历,在哈希表中如果没有定义这个key,那么就将这个key的值设置为1,如果已经定义了,那么就将其值自增,然后遍历第二个数组nums2,直接判断在哈希表中是否定义该key,如果定义且其计数值大于0,那么就将哈希表中该key的计数值自减,然后将该key推入数组,循环结束后返回目标数组即可。

每日一题

代码语言:javascript
复制
https://github.com/WindrunnerMax/EveryDay

题源

代码语言:javascript
复制
https://leetcode-cn.com/problems/intersection-of-two-arrays-ii/
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020-07-13 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 两个数组的交集II
    • 示例
      • 说明
        • 题解
          • 思路
            • 每日一题
              • 题源
              领券
              问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档