leetcode2248. 多个数组求交集【290场周赛】(java)

简单题重拳出击

第 290 场周赛(呜呜呜 第一次搞周赛)

简单题复杂化说的就是我

class Solution {
    public List<Integer> intersection(int[][] nums) {
        int n = nums.length;
        List<Integer> list = new ArrayList<>();
        Map<Integer, Integer> map = new HashMap<>();
        
        for(int i = 0; i < n ; i ++){
            for(int num : nums[i]){
                if(!map.containsKey(num)){
                    map.put(num, map.getOrDefault(num, 0) + 1);
                }else{
                    map.put(num, map.get(num) + 1);
                }
            }
        }
        for(int i = 0; i < n ; i ++){
            for(int num : nums[i]){
                if(map.get(num)  >= n){
                    list.add(num);
                }
            }
        }
        List<Integer> temp= new ArrayList<Integer>();  
        for(Integer i:list){  
            if(!temp.contains(i)){  
                temp.add(i);  
             }  
        }  
        Collections.sort(temp);
        return temp;
    }
}

其他大佬们的优化版本学一下

class Solution {
    public List<Integer> intersection(int[][] nums) {
        int n = nums.length;
        int[] counts = new int[1001];
        List<Integer> list = new ArrayList<>();
        for (int number[]:nums) {
            for (int x: number) {
                counts[x]++;
                if (counts[x] == n) list.add(x);
            }
        }
        Collections.sort(list);
        return list;
    }
}
经验分享 程序员 微信小程序 职场和发展