Two Out of Three

给三个数组, 求哪些数字出现在这三个数组中至少出现两次.

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;
    }
}