Two Out of Three
给三个数组, 求哪些数字出现在这三个数组中至少出现两次.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
class Solution { public List<Integer> twoOutOfThree(int[] nums1, int[] nums2, int[] nums3) { Map<Integer, Integer> map = new HashMap<>(); Set<Integer> set1 = new HashSet<>(); Set<Integer> set2 = new HashSet<>(); Set<Integer> set3 = new HashSet<>(); for(int n : nums1) set1.add(n); for(int n : nums2) set2.add(n); for(int n : nums3) set3.add(n); for(int n : set1) map.put(n, map.getOrDefault(n, 0) + 1); for(int n : set2) map.put(n, map.getOrDefault(n, 0) + 1); for(int n : set3) map.put(n, map.getOrDefault(n, 0) + 1); List<Integer> res = new LinkedList<>(); for(Map.Entry<Integer, Integer> e : map.entrySet()) { if(e.getValue() >= 2) res.add(e.getKey()); } return res; } } |