使用hashmap记录数字个数,如果nums1中重复数字多,遍历2时则不需要取少
如果2中重复数字多,则每次取到就-1,直至map内无值
1 class Solution { 2 public int[] intersect(int[] nums1, int[] nums2) { 3 HashMap<Integer,Integer> map=new HashMap<>(); 4 for(int i=0;i<nums1.length;i++){ 5 map.put(nums1[i],map.getOrDefault(nums1[i],0)+1); 6 } 7 List<Integer> list=new ArrayList<>(); 8 for(int i=0;i<nums2.length;i++){ 9 if(map.getOrDefault(nums2[i],0)!=0){ 10 11 map.put(nums2[i],map.get(nums2[i])-1); 12 list.add(nums2[i]); 13 14 } 15 } 16 int[] ans=new int[list.size()]; 17 for(int i=0;i<list.size();i++){ 18 ans[i]=list.get(i); 19 } 20 return ans; 21 } 22 }
标签:HashMap,LeetCode350,取小,int,Q27,new,nums1 From: https://www.cnblogs.com/cff1/p/18245700