Q27 LeetCode350 两个数组交集取小

使用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 }

 

posted @ 2024-06-13 13:26  清川1  阅读(6)  评论(0)    收藏  举报