力扣题目:349. 两个数组的交集 - 力扣(LeetCode)
给定两个数组 nums1
和 nums2
,返回 它们的
交集
。输出结果中的每个元素一定是 唯一 的。我们可以 不考虑输出结果的顺序 。
示例 1:
输入:nums1 = [1,2,2,1], nums2 = [2,2] 输出:[2]
示例 2:
输入:nums1 = [4,9,5], nums2 = [9,4,9,8,4] 输出:[9,4] 解释:[4,9] 也是可通过的
提示:
1 <= nums1.length, nums2.length <= 1000
0 <= nums1[i], nums2[i] <= 1000
import java.util.HashMap;
import java.util.Map;public class Solution {public static int[] intersection(int[] nums1, int[] nums2) {int L1=nums1.length;int L2=nums2.length;Map<Integer,Integer> map1=new HashMap<>();Map<Integer,Integer> map2=new HashMap<>();//1.存储hash表for(int i=0;i<L1;i++){map1.put(nums1[i],1);}for(int i=0;i<L2;i++){map2.put(nums2[i],nums2[i]);}//找是否有相同的,有的话map1的数量加一int count=0;for(Map.Entry<Integer,Integer> entry:map2.entrySet()){if(map1.containsKey(entry.getKey())){//有就添加1map1.put(entry.getKey(),map1.get(entry.getKey())+1);count++;}}//遍历map1找数量大于1的数组,交集添加到一维素组中int [] a=new int[count];int position=0;for(Map.Entry<Integer,Integer> entry:map1.entrySet()){if(entry.getValue()>1){a[position]=entry.getKey();position++;//有就添加1}}System.out.println(map1);System.out.println(map2);return a;}public static void main(String[] args) {int[] a=new int[]{4,9,5};int[] b=new int[]{9,4,9,8,4};intersection(a,b);}
}