350. 兩個數組的交集 II

問題
給定兩個數組,編寫一個函數來計算它們的交集。
在這裏插入圖片描述
例子
在這裏插入圖片描述
思路
map記錄nums1中各元素出現的個數
遍歷num2,當元素在map.containsKey(ele) && map.get(n)>=1時,將list.add(ele) 並讓map中k的值-1
代碼

class Solution {
    
    public int[] intersect(int[] nums1, int[] nums2) {
        List<Integer> list = new ArrayList<>();
        Map<Integer,Integer> map = new HashMap<>();
        // //map2交集:帶個數
        // Map<Integer,Integer> map2 = new HashMap<>();
        for(int n : nums1)
            map.put(n,map.getOrDefault(n,0)+1);
//         for(int n : nums2)
//             map2.put(n,map2.getOrDefault(n,0)+1);
//             // if(map.containsKey(n))
                
        
//         for(int k:map2.keySet())
//         {
//             if(map.containsKey(k)) {
//                 int a=map.get(k);
//                 int b=map2.get(k);
//                 int len=Math.min(a,b);
//                 for(int i=0; i<len; i++)
//                     list.add(k);
//             }
//         }    
        for(int n:nums2){
            if(map.containsKey(n) && map.get(n)>=1){
                list.add(n);
                map.put(n,map.get(n)-1);
            }
        }
        
        int[] arr = new int[list.size()];
        for(int i=0; i<list.size(); i++)
            arr[i]=list.get(i);
        return arr;
    }
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章