https://leetcode.com/problems/intersection-of-two-arrays-ii/#/description
很简单的问题,求两个集合的交集。写的有点蠢了。。先a了再说
初步思路是,将两个集合各自遍历一遍,映射一下元素,然后将映射后的结果进行对比。
遇到的一个问题是,在取map元素数据的时候,要对map里的数据进行比较,用==不能比较,只能用equals(待解决。。。先吃饭)
public class Solution { public int[] intersect(int[] nums1, int[] nums2) { Map<Integer,Integer> map1 = new HashMap<Integer,Integer>(); for(int i = 0;i < nums1.length;i ++){ if(map1.containsKey(nums1[i])){//已存在 int count = map1.get(nums1[i]); count ++; map1.put(nums1[i],count); } else{ map1.put(nums1[i],1); } } Map<Integer,Integer> map2 = new HashMap<Integer,Integer>(); for(int i = 0;i < nums2.length;i ++){ if(map2.containsKey(nums2[i])){//已存在 int count = map2.get(nums2[i]); count ++; map2.put(nums2[i],count); } else{ map2.put(nums2[i],1); } } int lengthMax = Math.max(map1.size(),map2.size()); ArrayList res = new ArrayList(); for (Map.Entry<Integer, Integer> entry1 : map1.entrySet()) { for (Map.Entry<Integer, Integer> entry2 : map2.entrySet()) { /* int a = entry1.getKey(); int b = entry2.getKey(); if(a == b){*/
if(entry1.getKey().equals(entry2.getKey())){ int lengthMin = Math.min(entry1.getValue(),entry2.getValue()); for(int i = 0;i < lengthMin;i ++){ res.add(entry1.getKey()); } } } } int size=res.size(); int [] resInt = new int[size]; for(int i = 0;i < size;i ++){ resInt[i] = (int)res.get(i); } return resInt; } }