代码随想录算法练习Day14:两个数组的交集

2024-04-16 04:28

本文主要是介绍代码随想录算法练习Day14:两个数组的交集,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

题目:给定两个数组,编写一个函数来计算它们的交集。

题目链接:349.两个数组的交集

卡哥的视频讲解:学透哈希表,set使用有技巧!Leetcode:349. 两个数组的交集

解题思路:用set集合解决,Set 集合适合用于查找重复元素的原因主要有两点:

  1. 唯一性: Set 集合中不允许存在重复的元素。当我们尝试向 Set 集合中添加已经存在的元素时,添加操作不会产生任何效果,因为集合中已经存在相同的元素了。

  2. 哈希表实现: 大多数 Set 实现(例如 HashSet)内部使用哈希表来存储元素。哈希表是一种高效的数据结构,能够以常量时间复杂度 O(1) 进行元素的查找和插入操作。这意味着无论集合中有多少个元素,查找和插入操作所需的时间都是相同的,因此在大量数据的情况下,Set 集合也能够快速地查找重复元素。

代码示例:

代码逻辑:

  1. 判断数组是否为空: 首先通过条件语句判断了传入的两个数组是否为空,如果其中任意一个为空,则直接返回一个长度为0的数组,表示交集为空。

  2. 创建集合对象: 然后使用 HashSet 创建了两个集合对象 set1resSet,用于存储数组中的元素。set1 用来存储第一个数组 nums1 中的元素,resSet 则用来存储两个数组的交集元素。

  3. 遍历第一个数组: 接着使用增强型 for 循环遍历第一个数组 nums1,并将其中的元素逐个添加到 set1 集合中。由于集合的特性是不允许重复元素,因此这样可以去除 nums1 中的重复元素。

  4. 判断第二个数组元素是否在集合中: 然后再次使用增强型 for 循环遍历第二个数组 nums2,并在遍历过程中判断集合 set1 是否包含当前元素。如果包含,则将该元素添加到 resSet 集合中。

  5. 转换为数组: 最后,创建一个新的数组 arr,其长度为 resSet 集合的大小,然后再次遍历 resSet 集合中的元素,并将其逐个赋值给数组 arr。最终返回数组 arr,即为两个数组的交集。

leetcode做题截图:

注意!最后定义新数组时的取值范围,是集合的size而不是集合的length噢

这篇关于代码随想录算法练习Day14:两个数组的交集的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/907786

相关文章

Python使用Tenacity一行代码实现自动重试详解

《Python使用Tenacity一行代码实现自动重试详解》tenacity是一个专为Python设计的通用重试库,它的核心理念就是用简单、清晰的方式,为任何可能失败的操作添加重试能力,下面我们就来看... 目录一切始于一个简单的 API 调用Tenacity 入门:一行代码实现优雅重试精细控制:让重试按我

Spring Boot配置和使用两个数据源的实现步骤

《SpringBoot配置和使用两个数据源的实现步骤》本文详解SpringBoot配置双数据源方法,包含配置文件设置、Bean创建、事务管理器配置及@Qualifier注解使用,强调主数据源标记、代... 目录Spring Boot配置和使用两个数据源技术背景实现步骤1. 配置数据源信息2. 创建数据源Be

Python实现MQTT通信的示例代码

《Python实现MQTT通信的示例代码》本文主要介绍了Python实现MQTT通信的示例代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一... 目录1. 安装paho-mqtt库‌2. 搭建MQTT代理服务器(Broker)‌‌3. pytho

MySQL进行数据库审计的详细步骤和示例代码

《MySQL进行数据库审计的详细步骤和示例代码》数据库审计通过触发器、内置功能及第三方工具记录和监控数据库活动,确保安全、完整与合规,Java代码实现自动化日志记录,整合分析系统提升监控效率,本文给大... 目录一、数据库审计的基本概念二、使用触发器进行数据库审计1. 创建审计表2. 创建触发器三、Java

Java中的数组与集合基本用法详解

《Java中的数组与集合基本用法详解》本文介绍了Java数组和集合框架的基础知识,数组部分涵盖了一维、二维及多维数组的声明、初始化、访问与遍历方法,以及Arrays类的常用操作,对Java数组与集合相... 目录一、Java数组基础1.1 数组结构概述1.2 一维数组1.2.1 声明与初始化1.2.2 访问

C# 比较两个list 之间元素差异的常用方法

《C#比较两个list之间元素差异的常用方法》:本文主要介绍C#比较两个list之间元素差异,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录1. 使用Except方法2. 使用Except的逆操作3. 使用LINQ的Join,GroupJoin

MySQL查询JSON数组字段包含特定字符串的方法

《MySQL查询JSON数组字段包含特定字符串的方法》在MySQL数据库中,当某个字段存储的是JSON数组,需要查询数组中包含特定字符串的记录时传统的LIKE语句无法直接使用,下面小编就为大家介绍两种... 目录问题背景解决方案对比1. 精确匹配方案(推荐)2. 模糊匹配方案参数化查询示例使用场景建议性能优

关于集合与数组转换实现方法

《关于集合与数组转换实现方法》:本文主要介绍关于集合与数组转换实现方法,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1、Arrays.asList()1.1、方法作用1.2、内部实现1.3、修改元素的影响1.4、注意事项2、list.toArray()2.1、方

Java中的雪花算法Snowflake解析与实践技巧

《Java中的雪花算法Snowflake解析与实践技巧》本文解析了雪花算法的原理、Java实现及生产实践,涵盖ID结构、位运算技巧、时钟回拨处理、WorkerId分配等关键点,并探讨了百度UidGen... 目录一、雪花算法核心原理1.1 算法起源1.2 ID结构详解1.3 核心特性二、Java实现解析2.

Java中调用数据库存储过程的示例代码

《Java中调用数据库存储过程的示例代码》本文介绍Java通过JDBC调用数据库存储过程的方法,涵盖参数类型、执行步骤及数据库差异,需注意异常处理与资源管理,以优化性能并实现复杂业务逻辑,感兴趣的朋友... 目录一、存储过程概述二、Java调用存储过程的基本javascript步骤三、Java调用存储过程示