本文主要是介绍Leet 350:两个数组的交集II,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
给你两个整数数组 nums1
和 nums2
,请你以数组形式返回两数组的交集。返回结果中每个元素出现的次数,应与元素在两个数组中都出现的次数一致(如果出现次数不一致,则考虑取较小值)。可以不考虑输出结果的顺序。
示例 1:
输入:nums1 = [1,2,2,1], nums2 = [2,2] 输出:[2,2]
示例 2:
输入:nums1 = [4,9,5], nums2 = [9,4,9,8,4] 输出:[4,9]
解题思路:
1.设置两个Map,先将num1中全部元素存入map中;
2.遍历num2中元素,若存在于map中,则对应键值减一,且res中对应键值加1。
3.将res转化为数组。
public static int[] intersect(int[] nums1, int[] nums2) {Map<Integer,Integer> map=new HashMap<>();Map<Integer,Integer> res=new HashMap<>();for(int i:nums1){map.put(i,map.getOrDefault(i,0)+1);}for(int j:nums2){if(map.containsKey(j)){res.put(j,res.getOrDefault(j,0)+1);map.put(j,map.get(j)-1);if(map.get(j)==0){map.remove(j);}}}//将res转换为数组//计算数组长度int len=0;for(int i:res.keySet()){len=len+res.get(i);}int[] result=new int[len];int count=0;for(int i:res.keySet()){for(int j=0;j<res.get(i);j++){result[count]=i;count++;}}return result;}
这篇关于Leet 350:两个数组的交集II的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!