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

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

参考:代码随想录

LeetCode: 题目序号349

更多内容欢迎关注我(持续更新中,欢迎Star✨)

Github:CodeZeng1998/Java-Developer-Work-Note

技术公众号:CodeZeng1998(纯纯技术文)

生活公众号:好锅(Life is more than code)

CSDN: CodeZeng1998

其他平台:CodeZeng1998好锅

349. 两个数组的交集

给定两个数组 nums1nums2 ,返回 它们的 交集

输出结果中的每个元素一定是 唯一 的。我们可以 不考虑输出结果的顺序

示例 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

解法一:使用 HashSet

    /*** 两个数组的交集** @param nums1 第一个数组* @param nums2 第二个数组* @return 有相交,返回交集,无相交,返回空数组* @author CodeZeng1998*/public int[] intersection(int[] nums1, int[] nums2) {if (nums1 == null || nums1.length == 0 || nums2 == null || nums2.length == 0) {return new int[0];}Set<Integer> set = new HashSet<>();Set<Integer> intersection = new HashSet<>();for (int i : nums1) {set.add(i);}for (int i : nums2) {if (set.contains(i)) {intersection.add(i);}}int[] resultArray = new int[intersection.size()];int j = 0;for (Integer i : intersection) {resultArray[j++] = i;}return resultArray;}

ChatGPT:

这段代码定义了一个名为intersection的方法,接受两个整数数组nums1nums2作为输入,并返回一个包含两个数组交集的整数数组。两个数组的交集是两个数组共有的元素集合。

以下是代码的详细解释:

  1. 方法首先检查输入数组是否为null或为空。如果任何一个为null或为空,它将返回一个空数组 {}
  2. 初始化一个名为set的HashSet,用于存储第一个数组nums1中的唯一元素。
  3. 另一个HashSet命名为intersection,用于存储两个数组中的公共元素。
  4. 第一个循环遍历数组nums1中的每个元素,并将其添加到set中。
  5. 第二个循环遍历数组nums2中的每个元素。对于每个元素,它检查它是否存在于set中。如果存在,则将元素添加到intersection集合中。
  6. 在找到公共元素之后,使用intersection集合的大小初始化一个整数数组resultArray
  7. intersection集合中的元素复制到resultArray中。
  8. 最后,返回包含交集元素的resultArray

解法二:使用 Hash 数组

  • 注意题目的数组大小和数值范围
    /*** 两个数组的交集** @param nums1 第一个数组* @param nums2 第二个数组* @return 有相交,返回交集,无相交,返回空数组* @author CodeZeng1998*/public int[] intersection(int[] nums1, int[] nums2) {int[] hash1Array = new int[1001];int[] hash2Array = new int[1001];for (int i : nums1) {hash1Array[i]++;}for (int i : nums2) {hash2Array[i]++;}List<Integer> resultList = new ArrayList<>();for (int i = 0; i < 1001; i++) {if (hash1Array[i] > 0 && hash2Array[i] > 0) {resultList.add(i);}}int[] resArray = new int[resultList.size()];int index = 0;for (Integer value : resultList) {resArray[index++] = value;}return resArray;}

ChatGPT:

这段代码定义了一个名为intersection的方法,接受两个整数数组nums1nums2作为输入,并返回一个包含两个数组之间交集元素的数组。

以下是代码的详细解释:

  1. int[] hash1Array = new int[1001];int[] hash2Array = new int[1001];: 这些代码初始化了两个大小为1001的整数数组hash1Arrayhash2Array。这些数组用于分别统计nums1nums2中数字的出现次数。
  2. 第一个循环遍历了nums1的元素。对于每个元素i,它在hash1Array中将i的计数递增。
  3. 类似地,第二个循环遍历了nums2的元素,并递增hash2Array中每个元素的计数。
  4. 处理了两个数组之后,代码从0到1000遍历每个索引。对于每个索引i,如果hash1Arrayhash2Arrayi的计数都大于0,则意味着i同时存在于两个数组中,因此将i添加到名为resultList的列表中。
  5. 在找到所有共同元素后,代码使用resultList创建一个新的整数数组resArray
  6. 最后,它遍历resultList并填充resArray,然后返回resArray

349. Intersection of Two Arrays

Given two integer arrays nums1 and nums2, return an array of their

intersection

. Each element in the result must be unique and you may return the result in any order.

Example 1:

Input: nums1 = [1,2,2,1], nums2 = [2,2]
Output: [2]

Example 2:

Input: nums1 = [4,9,5], nums2 = [9,4,9,8,4]
Output: [9,4]
Explanation: [4,9] is also accepted.

Constraints:

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

更多内容欢迎关注我(持续更新中,欢迎Star✨)

Github:CodeZeng1998/Java-Developer-Work-Note

技术公众号:CodeZeng1998(纯纯技术文)

生活公众号:好锅(Life is more than code)

CSDN: CodeZeng1998

其他平台:CodeZeng1998好锅

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/20222.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2.1 OpenCV随手简记(二)

为后续项目学习做准备&#xff0c;我们需要了解LinuxOpenCV、Mediapipe、ROS、QT等知识。 一、图像显示与保存 1、基本原理 1.1 图像像素存储形式 首先得了解下图像在计算机中存储形式&#xff1a;(为了方便画图&#xff0c;每列像素值都写一样了)。对于只有黑白颜色的灰度…

[有监督学习]2.详细图解正则化

正则化 正则化是防止过拟合的一种方法&#xff0c;与线性回归等算法配合使用。通过向损失函数增加惩罚项的方式对模型施加制约&#xff0c;有望提高模型的泛化能力。 概述 正则化是防止过拟合的方法&#xff0c;用于机器学习模型的训练阶段。过拟合是模型在验证数据上产生的误…

Java文件IO

White graces&#xff1a;个人主页 &#x1f649;专栏推荐:Java入门知识&#x1f649; &#x1f649; 内容推荐:JUC常见类&#x1f649; &#x1f439;今日诗词:东风吹柳日初长&#xff0c;雨馀芳草斜阳&#x1f439; ⛳️点赞 ☀️收藏⭐️关注&#x1f4ac;卑微小博主&…

Three.js 研究:4、创建设备底部旋转的科技感圆环

1、实现效果 2、PNG转SVG 2.1、原始物料 使用网站工具https://convertio.co/zh/png-svg/进行PNG转SVG 3、导入SVG至Blender 4、制作旋转动画 4.1、给圆环着色 4.2、修改圆环中心位置 4.3、让圆环旋转起来 参考一下文章 Three.js 研究&#xff1a;1、如何让物体动起来 Thre…

LeetCode # 1070. 产品销售分析 III

1070. 产品销售分析 III 题目 销售表 Sales&#xff1a; ------------------ | Column Name | Type | ------------------ | sale_id | int | | product_id | int | | year | int | | quantity | int | | price | int | ------------------ (sale_id, year) 是这张表的主键&am…

“论SOA在企业集成架构设计中的应用”必过模板,突击2024软考高项论文

考题部分 企业应用集成(Enterprise Application Integration, EAI)是每个企业都必须要面对的实际问题。面向服务的企业应用集成是一种基于面向服务体系结构(Service-OrientedArchitecture,SOA&#xff09;的新型企业应用集成技术&#xff0c;强调将企业和组织内部的资源和业务功…

VSCode界面Outline只显示类名和函数名,隐藏变量名

参考链接 https://blog.csdn.net/Zjhao666/article/details/120523879https://blog.csdn.net/Williamcsj/article/details/122401996 VSCode中界面左下角的Outline能够方便快速跳转到文件的某个类或函数&#xff0c;但默认同时显示变量&#xff0c;导致找某个函数时很不方便。…

mimkatz获取windows10明文密码

目录 mimkatz获取windows10明文密码原理 lsass.exe进程的作用 mimikatz的工作机制 Windows 10的特殊情况 实验 实验环境 实验工具 实验步骤 首先根据版本选择相应的mimikatz 使用管理员身份运行cmd 修改注册表 ​编辑 重启 重启电脑后打开mimikatz 在cmd切换到mi…

Seq2Seq模型:详述其发展历程、深远影响与结构深度剖析

Seq2Seq&#xff08;Sequence-to-Sequence&#xff09;模型是一种深度学习架构&#xff0c;专为处理从一个输入序列到一个输出序列的映射任务设计。这种模型最初应用于机器翻译任务&#xff0c;但因其灵活性和有效性&#xff0c;现已被广泛应用于自然语言处理&#xff08;NLP&a…

医院该如何应对网络安全?

在线医生咨询受到很多人的关注&#xff0c;互联网医疗行业的未来发展空间巨大&#xff0c;但随着医院信息化建设高速发展 医院积累了大量的患者基本信息、化验结果、电子处方、生产数据和运营信息等数据 这些数据涉及公民隐私、医院运作和发展等多因素&#xff0c;医疗行业办…

【QEMU中文文档】1.关于QEMU

本文由 AI 翻译&#xff08;ChatGPT-4&#xff09;完成&#xff0c;并由作者进行人工校对。如有任何问题或建议&#xff0c;欢迎联系我。联系方式&#xff1a;jelin-shoutlook.com。 QEMU 是一款通用的开源机器仿真器和虚拟化器。 QEMU 可以通过几种不同的方式使用。最常见的用…

OrangePi AIpro--新手上路

目录 一、SSH登录二、安装VNC Sevice&#xff08;经测试Xrdp远程桌面安装不上&#xff09;2.1安装xface桌面2.2 配置vnc服务2.2.1 设置vnc server6-8位的密码2.2.2 创建vnc文件夹&#xff0c;写入xstartup文件2.2.3 给xstartup文件提高权限2.2.4 在安装产生的vnc文件夹创建xsta…

C# 工厂模式学习

工厂模式&#xff08;Factory Pattern&#xff09;是一种创建型设计模式&#xff0c;它提供了一种创建对象的接口&#xff0c;而不是通过具体类来实例化对象。工厂模式可以将对象的创建过程封装起来&#xff0c;使代码更具有灵活性和可扩展性。 工厂模式有几种常见的实现方式&…

Go 如何通过 Kafka 客户端库 生产与消费消息

文章目录 0.前置说明1. confluent-kafka-go2. sarama3. segmentio/kafka-go4. franz-go选择建议 1.启动 kafka 集群2.安装 confluent-kafka-go 库3.创建生产者特殊文件说明如何查看.log文件内容 4.创建消费者 0.前置说明 Go 语言中有一些流行的 Kafka 客户端库。以下是几个常用…

【Uniapp小程序】自定义导航栏uni-nav-bar滚动渐变色

效果图 新建activityScrollTop.js作为mixins export default {data() {return {navBgColor: "rgba(0,0,0,0)", // 初始背景颜色为完全透明navTextColor: "rgba(0,0,0,1)", // 初始文字颜色};},onPageScroll(e) {// 设置背景const newAlpha Math.min((e.s…

踩坑:6年后为何不用GraphQL了?

GraphQL 是一项令人难以置信的技术&#xff0c;自从我在 2018 年首次开始将其投入生产以来&#xff0c;它就吸引了很多人的注意力。 在一大堆无类型的 JSON REST API 上构建了许多 React SPA 之后&#xff0c;我发现 GraphQL 是一股清新的空气。 然而&#xff0c;随着时间的推…

mybatis用map接收返回对象,不想让数据类型为tinyint自动转换为boolean,如何处理

在 MyBatis 中&#xff0c;当使用 Map 来接收查询结果时&#xff0c;MyBatis 会根据列的数据类型自动选择合适的 Java 类型来映射这些值。默认情况下&#xff0c;如果数据库列是 TINYINT(1)&#xff0c;MyBatis 可能会错误地将其映射为 boolean&#xff0c;因为它经常被误解为只…

PPP认证两种:PAP和CHAP,两次握手和三次握手

CHAP&#xff08;Challenge-Handshake Authentication Protocol&#xff0c;质询握手认证协议&#xff09;的设计理念是增强网络认证过程的安全性。在CHAP的三次握手过程中&#xff0c;不直接传送用户的明文密码&#xff0c;以此来提高安全性&#xff0c;具体步骤如下&#xff…

开源大模型源代码

开源大模型的源代码可以在多个平台上找到&#xff0c;以下是一些知名的开源大模型及其源代码的获取方式&#xff1a; 1. **艾伦人工智能研究所的开放大语言模型&#xff08;Open Language Model&#xff0c;OLMo&#xff09;**&#xff1a; - 提供了完整的模型权重、训练代…

springboot结合mybatis使用多数据源的方式

背景 最近有一个需求&#xff0c;有两个库需要做同步数据&#xff0c;一个Doris库&#xff0c;一个mysql库&#xff0c;两边的表结构一致&#xff0c;这里不能使用navicat等工具提供的数据传输之类的功能&#xff0c;只能使用代码做同步&#xff0c;springboot配置多数据…