题目:2032.至少在两个数组中出现的值

题目来源:

        leetcode题目,网址:110. 平衡二叉树 - 力扣(LeetCode)

解题思路:

       首先新建哈希集合 res 来保存结果,接着依次遍历三个数组,看起其中元素是否已在前面的数组中出现过,若是,加入 res。最后将 哈希集合 res 转化为 ArrayList 并返回即可。

解题代码:

class Solution {
    public List twoOutOfThree(int[] nums1, int[] nums2, int[] nums3) {
        Set res=new HashSet<>();
        Set set1=new HashSet<>();
        Set set2=new HashSet<>();
        for(int num:nums1){
            set1.add(num);
        }
        for(int num:nums2){
            set2.add(num);
            if(set1.contains(num)){
                res.add(num);
            }
        }
        for(int num:nums3){
            if(set1.contains(num)||set2.contains(num)){
                res.add(num);
            }
        }
        return new ArrayList<>(res);
    }
}
 
  

总结:

        官方题解是在遍历时使用哈希表计数,计数是使用位运算,低三位表示是否在第 1,2,3 个数组中。


你可能感兴趣的:(#,java,leetcode,java)