当前位置: 代码迷 >> 综合 >> Leetcode 350 两个数组的交集||
  详细解决方案

Leetcode 350 两个数组的交集||

热度:20   发布时间:2023-10-31 16:02:08.0

分享下自己的思路:

 1,首先将nums1里面的数值以键值对的形式放到HashMap里,数值以键放,值就是数值出现的次数

  2,遍历nums2中的数,如果键和nums2中的数值相等,把这个数值添加到List集合中,并且HashMap中数值对应的次数就减一

  3,最后将List集合中数值进行遍历放到一个数值中

public class Solution {
/*** 需求:给定两个数组,编写一个函数来计算它们的交集* 实例:输入: nums1 = [1,2,2,1], nums2 = [2,2]*   输出:[2,2]*   实例:输入: nums1 = [4,9,5], nums2 = [9,4,9,8,4]*   输出:[4,9]*/public static void main(String[] args) {int [] nums1 = {4,9,5};int [] nums2= {9,4,9,8,4};System.out.println(Arrays.toString(intersect(nums1,nums2)));}public static int[] intersect(int[] nums1, int[] nums2) {//1,首先将nums1里面的数值以键值对的形式放到HashMap里,数值以键放,值就是数值出现的次数List<Integer> lists=new ArrayList<Integer>();HashMap<Integer,Integer>  map =new HashMap<Integer,Integer>();for(int num:nums1) {if(map.containsKey(num)) {map.put(num,map.get(num)+1);}else {map.put(num,1);}}//2,遍历nums2中的数,如果键和nums2中的数值相等,把这个数值添加到List集合中,并且HashMap中数值对应的次数就减一	for(int num:nums2) {if(map.containsKey(num)&&map.get(num)!=0) {lists.add(num);map.put(num,map.get(num)-1);}}int [] result =new int [lists.size()];for(int i=0;i<lists.size();i++) {result[i]=lists.get(i);}return result;}
}