分享下自己的思路:
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;}
}