此博客链接: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; } }
我感觉自己没有错啊,可是第一个示例都没有过去,我。。。。。。虽然知道肯定是我哪里错了了,但是我就是找不到错误点在哪里。