import java.util.*;
// 2032. Two Out of Three
class Solution {
public List<Integer> twoOutOfThree(int[] nums1, int[] nums2, int[] nums3) {
Map<Integer, Integer> hashMap = new HashMap<>();
for (int num : nums1) {
hashMap.put(num, 1);
}
for (int num : nums2) {
hashMap.put(num, hashMap.getOrDefault(num, 0) | 2);
}
for (int num : nums3) {
hashMap.put(num, hashMap.getOrDefault(num, 0) | 4);
}
List<Integer> ans = new LinkedList<>();
for (Map.Entry<Integer, Integer> entry : hashMap.entrySet()) {
Integer key = entry.getKey();
Integer value = entry.getValue();
if ((value & (value - 1)) != 0) {
ans.add(key);
}
}
return ans;
}
}
学习笔记:
这是一道非常简单,又考验基本功的好题。
用到了哈希表、位运算。
首先位运算分别或上1和2和4,然后判断一下结果里面有没有多个1。