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; } }
上一篇:
IDEA上Java项目控制台中文乱码