当前位置: 首页 > news >正文

leetcode2248. 多个数组求交集

一、题目描述

给你一个二维整数数组 nums ,其中 nums[i] 是由 不同 正整数组成的一个非空数组,按 升序排列 返回一个数组,数组中的每个元素在 nums 所有数组 中都出现过。

示例 1:

输入:nums = [[3,1,2,4,5],[1,2,3,4],[3,4,5,6]]
输出:[3,4]
解释:
nums[0] = [3,1,2,4,5],nums[1] = [1,2,3,4],nums[2] = [3,4,5,6],在 nums 中每个数组中都出现的数字是 3 和 4 ,所以返回 [3,4] 。
示例 2:

输入:nums = [[1,2,3],[4,5,6]]
输出:[]
解释:
不存在同时出现在 nums[0] 和 nums[1] 的整数,所以返回一个空列表 [] 。

提示:

1 <= nums.length <= 1000
1 <= sum(nums[i].length) <= 1000
1 <= nums[i][j] <= 1000
nums[i] 中的所有值 互不相同

二、题目解析

1、双指针

class Solution {public List<Integer> intersection(int[][] nums) {//当nums长度为1,需确保第一个元素是有序的Arrays.sort(nums[0]);int[] array = nums[0];for(int i = 1;i < nums.length;i++){array = intersect(array,nums[i]);}List<Integer> res = new ArrayList();for(int i = 0;i < array.length;i++){res.add(array[i]);}return res;}public int[] intersect(int[] nums1, int[] nums2) {Arrays.sort(nums1);Arrays.sort(nums2);int i = 0,j = 0,end = 0;int[] res = new int[nums1.length + nums2.length];while(i < nums1.length && j < nums2.length){if(nums1[i] < nums2[j]){i++;}else if(nums1[i] > nums2[j]){j++;}else{//不存在重复元素故不需特殊判断res[end++] = nums1[i];i++;j++;}}//截取数组并进行复制:copyOfRange(int []original,int from,int to),original为原始的int型数组,from为开始角标值,to为终止角标值。(其中包括from角标,不包括to角标。即处于[from,to)状态)return Arrays.copyOfRange(res,0,end);}
}

在这里插入图片描述
2、set
set1.retainAll(set2)方法可快速找到两个set相同元素,并去除set1中非二者交集元素

class Solution {public List<Integer> intersection(int[][] nums) {Set<Integer>set=new HashSet<>();for(int i:nums[0]) {set.add(i);}for(int i=1;i<nums.length;i++) {Set<Integer>set2=new HashSet<>();for(int j:nums[i]) {set2.add(j);}set.retainAll(set2);}List<Integer>ans=new ArrayList<>(set);Collections.sort(ans);return ans;}
}

在这里插入图片描述
3、统计元素出现的次数

class Solution {public List<Integer> intersection(int[][] nums) {int len = 1001;int[] array = new int[len];for (int i = 0; i < nums.length; i++){for (int j = 0; j < nums[i].length; j++){array[nums[i][j]]++;}}List<Integer> ans = new LinkedList<>();for (int i = 1; i < len; i++){if (array[i] == nums.length){ans.add(i);}}return ans;}
}

在这里插入图片描述

http://www.dtcms.com/a/339683.html

相关文章:

  • ES支持哪些数据类型,和MySQL之间的映射关系是怎么样的?
  • Vue3 学习教程,从入门到精通,vue3综合案例:“豪华版”待办事项(41)
  • [Polly智能维护网络] 网络重试原理 | 弹性策略
  • PyTorch数据处理工具箱(utils.data简介)
  • UE5 PCG 笔记(一)
  • C++ STL(标准模板库)学习
  • 华为鸿蒙系统SSH如何通过私钥连接登录
  • 传统概率信息检索模型:理论基础、演进与局限
  • 短剧小程序系统开发:打造沉浸式短剧观影体验
  • EPM240T100I5N Altera FPGA MAX II CPLD
  • Spring Cache 整合 Redis 实现高效缓存
  • idea如何设置tab为4个空格
  • 复习登录校验流程:会话跟踪技术与请求拦截方案详解
  • SpringBoot-集成POI和EasyExecl
  • 《Light Sci Appl》突破:vdW材料实现亚波长光学涡旋生成,转换效率达46%
  • 前端基础知识操作系统系列 - 01(操作系统的理解?核心概念有哪些)
  • Spring Ai Prompts
  • 佰力博检测与您探讨电晕极化时有时会击穿是什么原因
  • 海洋牧场智能化监控系统升级,保障养殖安全
  • Web3.0 时代的电商系统:区块链如何解决信任与溯源问题?
  • 嵌入式系统学习Day19(数据结构)
  • 用poll改写select
  • 网站频繁遭遇SQL注入、XSS攻击该怎么办?
  • 分布式搜索(Elasticsearch)深入用法
  • git 创用操作
  • java快速接入mcp以及结合mysql动态管理
  • 【SQL优化案例】统计信息缺失
  • 前端使用koa实现调取deepseekapi实现ai聊天
  • RabbitMQ:SpringAMQP Fanout Exchange(扇型交换机)
  • Apache ECharts 6.0.0 版本-探究自定义动态注册机制(二)