题目:2248.多个数组求交集

​​题目来源:

        leetcode题目,网址:2248. 多个数组求交集 - 力扣(LeetCode)

解题思路:

       首先判断数组维度数,若为 1 ,转化为 list 并并排序后输出;否则获得前两行的交集,获得该交集与第三行数组的交集作为新的交集即前三行的交集.......直至获得所有元素的交集。转化为 list 并排序后返回即可。

解题代码:

class Solution {
    public List intersection(int[][] nums) {
        if(nums.length==1){
            List list=new ArrayList<>();
            for(int num:nums[0]){
                list.add(num);
            }
            Collections.sort(list);
            return  list;
        }
        Set set=getCommon(nums[0],nums[1]);
        for(int i=2;i res=new ArrayList<>(set);
        Collections.sort(res);
        return res;
    }
    public Set getCommon(Set a,int[] b){
        Set res=new HashSet<>();
        for(int num:b){
            if(a.contains(num)){
                res.add(num);
            }
        }
        return res;
    }
    public Set getCommon(int[] a,int[] b){
        Set aSet=new HashSet<>();
        for(int num:a){
            aSet.add(num);
        }

        Set res=new HashSet<>();
        for(int num:b){
            if(aSet.contains(num)){
                res.add(num);
            }
        }
        return res;
    } 
}

总结:

        官方题解给出了两种解法。第一种是模拟。第二种是统计每个整数的出现次数,因为数组每一行的元素互不相同,因此若某个整数在每一行中都出现了,其出现次数一定为 n。


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