zoukankan      html  css  js  c++  java
  • 两个数组的交集II

    两个数组的交集II

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

    示例

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

    说明

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

    题解

    /**
     * @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推入数组,循环结束后返回目标数组即可。

    每日一题

    https://github.com/WindrunnerMax/EveryDay
    

    题源

    https://leetcode-cn.com/problems/intersection-of-two-arrays-ii/
    
  • 相关阅读:
    C#编程概念系列内容索引
    Latin1_General_BIN
    C#编程概念系列(一):面向对象编程
    System.Web.HttpException: 为 ChartImg.axd 执行子请求时出错
    Excel导入数据到数据库
    C#编程概念系列(二):应用程序域
    ASP.NET 基础结构
    [博]留作证明是原创样式
    [整]网址搜集
    仅为调博客样式
  • 原文地址:https://www.cnblogs.com/WindrunnerMax/p/13295371.html
Copyright © 2011-2022 走看看