Daily LeetCode – day0153 2032. Two Out of Three

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。


关于樊轶群

一个善良的理想主义者。
此条目发表在每日LeetCode分类目录。将固定链接加入收藏夹。

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注