两个数组的交集 II

此博客链接:https://www.cnblogs.com/ping2yingshi/p/14065888.html

两个数组的交集 II

题目链接:https://leetcode-cn.com/problems/intersection-of-two-arrays-ii/

题目

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

示例 1:

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

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

题解

思路:两个数组中的数分别存到哈希表中,key为数字,value值为数字的个数。然后找key相同,value值中小的数集合。

题解:

        1.分别给两个数组存到哈希表中。

         2.先找相同的key值,然后对比vlaue中哪个值小。

         3.取小的值遍历,把key存到一个新定义的数组中。

代码

class Solution {
    public int[] intersect(int[] nums1, int[] nums2) {
        int lens=nums1.length<=nums2.length?nums1.length:nums2.length;
        Map<Integer,Integer> map=new HashMap();
        Map<Integer,Integer> map1=new HashMap();
        for(int i=0;i<nums1.length;i++)
        {
            Integer tem=map.get(i);
            if(tem==null)
              map.put(nums1[i],1);
            else
               map.put(nums1[i],++tem);
        }
        for(int i=0;i<nums2.length;i++)
        {
            Integer tem=map1.get(i);
            if(tem==null)
              map1.put(nums2[i],1);
            else
               map1.put(nums2[i],++tem);
        }
        int result[]=new int [lens];
        for(Integer m:map.keySet())
        {
            for(Integer n:map1.keySet())
            {
                if(m==n)
                {
                   Integer len=map.get(m)<=map1.get(n)?map.get(m):map1.get(n);
                    for(int i=0;i<len;i++)
                    {
                        result[i]=m;
                    }
                    
                }
            }
        }
        return result;
    }
}

我感觉自己没有错啊,可是第一个示例都没有过去,我。。。。。。虽然知道肯定是我哪里错了了,但是我就是找不到错误点在哪里。

 

posted @ 2020-12-01 01:13  萍2樱释  阅读(98)  评论(0编辑  收藏  举报