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

leetcode349. 两个数组的交集

一、题目描述

给定两个数组 nums1 和 nums2 ,返回 它们的 交集 。输出结果中的每个元素一定是 唯一 的。我们可以 不考虑输出结果的顺序 。

示例 1:

输入:nums1 = [1,2,2,1], nums2 = [2,2]
输出:[2]
示例 2:

输入:nums1 = [4,9,5], nums2 = [9,4,9,8,4]
输出:[9,4]
解释:[4,9] 也是可通过的

提示:

1 <= nums1.length, nums2.length <= 1000
0 <= nums1[i], nums2[i] <= 1000

二、题目解析

1、set+list

class Solution {public int[] intersection(int[] nums1, int[] nums2) {HashSet<Integer> set = new HashSet();List<Integer> list = new ArrayList();for(int i = 0;i < nums1.length;i++){set.add(nums1[i]);}for(int i = 0;i < nums2.length;i++){if(set.contains(nums2[i])){list.add(nums2[i]);//输出的交集必须是元素唯一set.remove(nums2[i]);}}int[] res = new int[list.size()];for(int i = 0;i < list.size();i++){res[i] = list.get(i);}return res;}
}

在这里插入图片描述

2、两个set

class Solution {public int[] intersection(int[] nums1, int[] nums2) {HashSet<Integer> set = new HashSet();HashSet<Integer> set1 = new HashSet();for(int i = 0;i < nums1.length;i++){set.add(nums1[i]);}for(int i = 0;i < nums2.length;i++){if(set.contains(nums2[i])){set1.add(nums2[i]);}}int[] res = new int[set1.size()];int j = 0;for(Integer num : set1){res[j++] = num;}return res;}
}

在这里插入图片描述

3、双指针

class Solution {public int[] intersection(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{//判断结果集不存在此元素才添加元素if(end == 0 || nums1[i] != res[end - 1]){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);}
}

在这里插入图片描述

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

相关文章:

  • 轻度娱乐浪潮下定制开发开源AI智能名片S2B2C商城小程序的机遇与策略
  • 厚板数控矫平机的“第三堂课”——把视角拉远,看看它如何重塑整条制造链
  • 供水设备智慧化管理物联网解决方案:远程监控与运维
  • 搭建最新--若依分布式spring cloudv3.6.6 前后端分离项目--步骤与记录常见的坑
  • BKP相关知识点
  • 从机器视觉到图像识别:计算机视觉的多维探索
  • LINUX819 shell:for for,shift ,{} ,array[0] array[s] ,declare -x -a
  • 服务注册与服务发现原理与实现
  • CentOS 8开发测试环境:直接安装还是Docker更优?
  • Docker核心---数据卷(堵门秘籍)
  • 应用控制技术、内容审计技术、AAA服务器技术
  • 深入理解Redis持久化:让你的数据永不丢失
  • 电子电气架构 ---SDV技术基础与传统E/E架构有何不同?
  • 利用图数据库高效解决 Text2sql 任务中表结构复杂时占用过多大模型上下文的问题
  • 智慧养老中IPTV融合对讲:重塑养老沟通新生态
  • t12 low power design: power plan脚本分享(4) power stripe
  • spring声明式事务,finally 中return对事务回滚的影响
  • 数据资产入表——图解《企业数据资源相关会计处理暂行规定》《数据资产评估指导意见》【附全文阅读】
  • 企业架构是什么?解读
  • 功能组状态的独立性以及 进程启动在状态管理中的设计意图
  • 用“新”突围,康师傅布局增量市场
  • latex|算法algorithm宏包和注意事项
  • 检测设备为手机或电脑来跳转不同网页
  • GaussDB 八种常规锁介绍
  • Redis的使用(初阶)
  • 命令行如何更改参数?
  • 化学反应中的贝叶斯优化
  • Spring RestTemplate的postForObject()方法详解与实践指南
  • 从一个ctf题中学到的多种php disable_functions bypass 姿势
  • 网络聚合链路与软件网桥配置指南