java数据结构与算法刷题-----LeetCode349. 两个数组的交集

java 二个数组的交集,算法 java 二个数组的交集,算法 java 二个数组的交集,算法 立即下载
java数据结构与算法刷题目录(剑指Offer、LeetCode、ACM)-----主目录-----持续更新(进不去说明我没写完):https://blog.youkuaiyun.com/grd_java/article/details/123063846

在这里插入图片描述

解题思路
  1. 创建一个记录容器A。我们可以先将第一个数组的元素,去重后,放入A。
  2. 然后判断第二个数组,如果它的元素,A中已经存在,那么这个元素就是交集。
  3. 每个交集元素,只输出一次
代码:使用set集合:时间复杂度O(m + n) 空间复杂度O(m + n),使用数组:时间复杂度O(m+n) 空间复杂度O(value) 其中value是数组中元素的取值范围

在这里插入图片描述

class Solution {
    //此方法,是用效率更好的数组索引,来代替Map,Set等Collection集合。效率当然更好,但是实际工作场景中,意义不大,只限做题时用
    public int[] intersection(int[] nums1, int[] nums2) {
        boolean[] map = new boolean[1001];//用数组充当map
        ArrayList<Integer> list = new ArrayList<>();//用list充当set集合
        for(int num:nums1) map[num] = true;//将nums1数组出现的元素,对应到map赋值为true
        for(int num:nums2){//对nums2数组出现的元素
            if(map[num]){//如果nums1也出现过
                list.add(num);//将其添加到list中
                map[num] = false;//相当于去重,下次再语句相同的元素,不再次添加到list
            }
        }
        // return list.stream().mapToInt(i->i).toArray();
        // return list.stream().mapToInt(Integer::intValue).toArray();
        //上面注释掉的两行,是Java的stream流API + lambda表达式的两种写法。和下面的代码效果相同。但是上面两行有更多的健壮性考虑,是java自己提供的方法。
        int[] res=new int[list.size()];
		for (int i = 0; i < res.length; i++) {
			res[i]= list.get(i);
		}
		return res;
    }
    /**
        此方法,是直接用两个Set集合,而不用数组,效率肯定没有直接数组快,但是更加保险,也没有很大的局限性。是工作场景中的首选,工作场景中,上面那种效率更高的方法,是不可以使用的,很容易出现各种各样的问题,也很容易导致大量内存空间的浪费。
     */
    public int[] intersection1(int[] nums1, int[] nums2) {
        //除了中间容器换为set以外,其它操作没什么不同
        Set<Integer> set1 = new HashSet<Integer>();
        Set<Integer> set2 = new HashSet<Integer>();
        for (int num : nums1) {//先将nums1的元素放入set1,set会自动去重
            set1.add(num);
        }
        for (int num : nums2) {//将nums2元素放入set2
            set2.add(num);
        }
        return getIntersection(set1, set2);
    }

    public int[] getIntersection(Set<Integer> set1, Set<Integer> set2) {
        if (set1.size() > set2.size()) {//如果当前set2指向的集合更小
            return getIntersection(set2, set1);//保证永远是set1比set2更小
        }
        Set<Integer> intersectionSet = new HashSet<Integer>();//保存答案
        for (int num : set1) {//遍历set1的元素
            if (set2.contains(num)) {//如果set2也有这个元素
                intersectionSet.add(num);//将其添加到答案中
            }
        }
        //将答案集合,转为int[]数组
        int[] intersection = new int[intersectionSet.size()];
        int index = 0;
        for (int num : intersectionSet) {
            intersection[index++] = num;
        }
        return intersection;
    }
}
STK传感器配置全攻略:从光学到雷达的7种视场类型详解(附避坑指南) 本文详细解析了STK软件中传感器的7种视场类型,从基础的Simple Conic、Complex Conic到高级的SAR与EOIR,提供了完整的配置步骤与实战避坑指南。重点阐述了雷达、光学等不同物理设备的建模选择逻辑,并针对常见的“No Access”等报错问题给出了系统性的排查方案,帮助工程师高效完成卫星系统设计与任务分析。 阅读详情

相关推荐

发那科机器人Modbus通讯配置全攻略:从IP设置到信号调试

本文详细介绍了发那科机器人Modbus通讯的配置方法,从基础认知到IP设置、端口配置、信号调试及故障排查。重点讲解了UOP和DI/DO信号的配置技巧,帮助工程师快速实现机器人与PLC的稳定通讯,提升自动化系统效率。

weixin_27872611的博客 624

Java查找两个数组的交集

给定两个排序后的数组,编写一个Java代码来查找两个数组的交集。 例如,如果输入数组是: arr1 [] = {2,3,6,7,9,11} arr2 [] = {4,6,8,9,12} 然后,您的程序应将交集打印为{6,9}。在编写实际代码之前,让我们首先讨论解决此问题的不同方法。 如何找到两个数组的交集 方法1(最简单或幼稚的方法): 在这种方法中,我们采用第一个数组的每个元素,并与第二个数组的每个元素进行比较。 这种方法的时间复杂度为O(mn),其中m和n是arr1 [...

allway2的博客 1万+

手把手教你用C#实现TwinCAT 3 ADS通讯(附完整代码示例)

本文详细解析了如何使用C#实现TwinCAT 3 ADS通讯,包括协议核心价值、开发环境配置、变量通信实践及高级应用场景。通过完整代码示例和性能优化技巧,帮助开发者高效实现工业自动化系统中的实时数据交换,特别适合倍福(Beckhoff)平台用户。

weixin_29230901的博客 118

Java求两个数组的交集、差集、并集

Java求两个数组的交集、差集、并集

筱白爱学习!的博客 9021

win10 运行lisflood_8踩过的坑

1、安装cuda及VS2019 https://www.bilibili.com/read/cv7335974/ 2、netcdf.h头文件找不到问题 https://www.cnblogs.com/lyggqm/p/12926974.html https://blog.csdn.net/u011954296/article/details/54617048 3、编码问题 https://blog.csdn.net/qq_33485434/article/details/81196843 4、

我的笔记 4115

‌NTRU算法详细教程 | 2025年最新版(基于NIST后量子密码标准更新)

‌:NTRU是当前抗量子加密的黄金标准,‌。

blns_yxl的博客 1804

350. 两个数组的交集 II

基本功

TTornado的博客 339

服务器卡死排查实战:从现象分类到根因定位的完整手册

服务器卡死是运维中最令人头疼的故障之一,从游戏圈吐槽的“土豆服务器”到生产环境中的Linux系统无响应、rsync复制挂起,本质都是系统或进程失去正常响应能力。其原理通常涉及CPU、内存、磁盘IO或网络资源耗尽,以及内核和驱动异常。掌握系统化的排查方法,能够帮助工程师快速定位根因、缩短故障时间,避免盲目重启。本文从资源、层级、场景等多维度分类,结合top、dmesg、strace等工具,梳理一套从现象确认、指标收集、日志分析到进程定位的实战排查流程,并覆盖常见高频场景与预防治理建议。无论你是运维新手还是老手

weixin_33851177的博客 377

两个数组的交集(Java的2种算法实现)

两个数组的交集(力扣:349) 给定两个数组,编写一个函数来计算它们的交集。 说明: 输出结果中的每个元素一定是唯一的。 我们可以不考虑输出结果的顺序。

卜大爷的博客 3万+

【OpenClaw从入门到精通】第12篇:OpenClaw 2026子代理实战全攻略:用ACP架构搭建多智能体协作网络(附完整代码)

本文聚焦OpenClaw 2026.3.2版本默认启用的ACP(Agent Communication Protocol)子代理机制,从核心概念、底层原理到企业级实操全流程拆解。先解析子代理的定义、ACP协议通信原理及主从代理分工逻辑,再提供环境准备的详细步骤(版本验证、配置调整、技能安装);随后通过三个递进式虚拟案例(客服分流、智能文档处理、企业级招聘全流程),提供可直接运行的完整代码、执行结果及技术要点解析;最后补充子代理管理运维、性能优化与避坑指南。

专注于人工智能、软件开发、工控自动化、工厂数字化及智能化等领域,希望和大家共同进步! 2384

Python爬虫深度对抗:拼多多与得物价格监控系统中的设备指纹模拟与SkyWalking风控绕过实战

在电商数据采集领域,拼多多和得物(毒)APP堪称国产风控系统的“双子星”。前者依托于拼多多集团强大的安全团队,后者则以其独特的“潮流单品”数据价值和高昂的爬取成本闻名。对于任何一名爬虫工程师而言,能够稳定、高效地获取这两大平台的价格、库存、销量等动态信息,都是一项极具挑战性的技术试金石。传统的基于requests库的简单HTTP请求,在面对这两款应用时几乎寸步难行。你会发现,无论怎样伪造User-Agent、怎样轮换代理IP,返回的永远是状态码412403,或者是一个包含验证滑块设备异常的JSON错误。

2201_76125261的博客 866

LeetCode - Easy - 349

千千万万要记得:多刷题!!多刷题!!之前算法是我的硬伤,后面硬啃了好长一段时间才补回来,算法才是程序员的灵魂!!!!篇幅有限,以下只能截图分享部分的资源!!(1)多线程(这里以多线程为代表,其实整理了一本JAVA核心架构笔记集)(2)刷的算法题(还有左神的算法笔记)(3)面经+真题解析+对应的相关笔记(很全面)(4)视频学习(部分)ps:当你觉得学不进或者累了的时候,视频是个不错的选择在这里,最后只一句话:祝大家offer拿到手软!!一个人可以走的很快,但一群人才能走的更远。

2401_84006757的博客 670

SAP 的预算控制并非单一功能,而是根据管控的精细度和业务场景,主要通过三个模块实现:CO(成本控制)、FM(基金管理) 和 PS(项目系统)

SAP系统提供三种预算控制模型:基于CO模块的成本中心/内部订单预算管控,适用于日常费用管理;基于FM模块的基金中心/承诺项目预算控制,满足公共部门严格资金管理需求;基于PS模块的WBS元素预算控制,专为项目型企业设计。各模型通过特定配置实现预算编制、审批、控制和分析功能,并配有核心事务代码(T-Code)支持全流程操作。企业可根据业务场景选择适合的预算控制方式,实现从预算编制到执行监控的闭环管理。

金牌架构师 257

【leetcode刷题】63 . 两个数组的交集 ——Java版

hashset

公号:一条coding 1万+

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

力扣简单题系列:两个数组的交集(LeetCode 349)

这道题通过哈希集合法,高效地找到了两个数组的交集。对于初学者来说,掌握哈希集合的使用是解决类似问题的关键。

weixin_53910667的博客 1471

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

【简单】力扣算法题解析LeetCode349:两个数组的交集

LeetCode 349题要求计算两个整数数组的交集,结果需去重且顺序不限。通过哈希集合优化,核心步骤为: 将较小数组存入HashSet以去重(O(m)时间); 遍历另一数组,利用集合的O(1)查找筛选交集元素(O(n)时间); 将结果集转为数组输出。 复杂度: 时间O(m+n),空间O(min(m,n))。Java实现中,双重HashSet确保高效去重,实测执行效率优异(见提交详情)。 关键词: 哈希集合、去重、交集、时间复杂度O(m+n)

ylumwd的博客 1236

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

Java实现 LeetCode 349 两个数组的交集

349. 两个数组的交集 给定两个数组,编写一个函数来计算它们的交集。 示例 1: 输入: nums1 = [1,2,2,1], nums2 = [2,2] 输出: [2] 示例 2: 输入: nums1 = [4,9,5], nums2 = [9,4,9,8,4] 输出: [9,4] 说明: 输出结果中的每个元素一定是唯一的。 我们可以不考虑输出结果的顺序。 class Solution { ...

南 墙 1万+

3-哈希表-21-两个数组的交集-LeetCode349

算法:3-哈希表-21-两个数组的交集-LeetCode349

weixin_43873121的博客 1204

【LeetCode】349. 两个数组的交集 & 350. 两个数组的交集 II

349. 两个数组的交集 题目链接:https://leetcode-cn.com/problems/intersection-of-two-arrays/ 难度:简单 题目描述 给定两个数组,编写一个函数来计算它们的交集。 测试用例 示例 1: 输入:nums1 = [1,2,2,1], nums2 = [2,2] 输出:[2] 示例 2: 输入:nums1 = [4,9,5], nums2 = [9,4,9,8,4] 输出:[9,4] 说明: 输出结果中的每个元素一定是唯

一定要站在自己热爱的生活里闪闪发光 1万+

LeetCode Java面试刷题笔记汇总

LeetCode Java刷题笔记汇总,按照类型刷题效率更高。

终生学习践行者 2948

LeetCode_349. 两个数组的交集

文章目录题目分析Code 题目分析 https://leetcode-cn.com/problems/intersection-of-two-arrays/ Code

小工匠 2万+

LeetCode刷题-349.两个数组的交集

LeetCode每日一题系列-349.两个数组的交集 一、题目描述: 给定两个数组,编写一个函数来计算它们的交集。 示例 1: 输入:nums1 = [1,2,2,1], nums2 = [2,2] 输出:[2] 示例 2: 输入:nums1 = [4,9,5], nums2 = [9,4,9,8,4] 输出:[9,4] 说明: 输出结果中的每个元素一定是唯一的。 我们可以不考虑输出结果的顺序。 二、Java代码 因为不能有重复的,我们可以使用Set集合来存放结果。 把数组nums1也放到一个Set

AnswerCoder的博客 309

Leetcode 349. 两个数组的交集

Leetcode 349. 两个数组的交集 一、题目描述 给定两个数组,编写一个函数来计算它们的交集。 示例1: 输入: nums1 = [1,2,2,1], nums2 = [2,2] 输出: [2] 示例2: 输入: nums1 = [4,9,5], nums2 = [9,4,9,8,4] 输出: [9,4] 说明: 输出结果中的每个元素一定是唯一的。 我们可以不考虑输出结果的顺...

roseduan 的个人博客 726

LeetCode第349题两个数组的交集

349. 两个数组的交集 题目: 给定两个数组,编写一个函数来计算它们的交集。 示例 1: 输入:nums1 = [1,2,2,1], nums2 = [2,2] 输出:[2] 示例 2: 输入:nums1 = [4,9,5], nums2 = [9,4,9,8,4] 输出:[9,4] 说明: 输出结果中的每个元素一定是唯一的。 我们可以不考虑输出结果的顺序。 来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/intersection-of-two-ar

qq_41967623的博客 279

算法第十六天:leetcode349.两个数组的交集

如下表所示,您可以直接复制下面网址进入力扣学习,在观看下面的内容之前您一定要先做一遍哦,以便让你印象更加深刻!给定两个数组nums1和nums2,返回它们的交集。输出结果中的每个元素一定是的。我们可以。[2][9,4][4,9] 也是可通过的。

m0_75068978的博客 886
上一篇: java数据结构与算法刷题-----LeetCode242. 有效的字母异位词
下一篇: java数据结构与算法刷题-----LeetCode454. 四数相加 II
ydenergy_殷志鹏
博客等级 码龄7年 5887粉丝 543原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ydenergy_殷志鹏

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值