1,题目
2,思路
- 首先判断那个短为什么呢因为我们用短的数组去挨个点名长的数组
- 主要用map装长的数组max
- 判断map里面有几个min数组的元素,list保存交集
- 最后用数组返回list的内容
3,代码
import java.util.*;public class Leetcode350 {public static void main(String[] args) {System.out.println(new Solution350().intersect(new int[]{1, 2}, new int[]{1, 1}));}
}class Solution350 {public int[] intersect(int[] nums1, int[] nums2) {int[] max = nums1.length >= nums2.length ? nums1 : nums2;//长int[] min = nums1.length < nums2.length ? nums1 : nums2;//短List<Integer> list = new ArrayList<>();Map<Integer, Integer> map = new HashMap<>();for (int i = 0; i < max.length; i++) {if (map.containsKey(max[i])) {map.put(max[i], map.get(max[i]) + 1);} else {map.put(max[i], 1);}}for (int i = 0; i < min.length; i++) {if (map.containsKey(min[i]) && map.get(min[i]) > 0) {map.put(min[i], map.get(min[i]) - 1);list.add(min[i]);}}int[] nums3 = new int[list.size()];for (int i = 0; i < nums3.length; i++) {nums3[i] = list.get(i);}return nums3;}
}