本文主要是介绍代码随想录算法练习Day14:两个数组的交集,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
题目:给定两个数组,编写一个函数来计算它们的交集。
题目链接:349.两个数组的交集
卡哥的视频讲解:学透哈希表,set使用有技巧!Leetcode:349. 两个数组的交集
解题思路:用set集合解决,Set
集合适合用于查找重复元素的原因主要有两点:
-
唯一性:
Set
集合中不允许存在重复的元素。当我们尝试向Set
集合中添加已经存在的元素时,添加操作不会产生任何效果,因为集合中已经存在相同的元素了。 -
哈希表实现: 大多数
Set
实现(例如HashSet
)内部使用哈希表来存储元素。哈希表是一种高效的数据结构,能够以常量时间复杂度 O(1) 进行元素的查找和插入操作。这意味着无论集合中有多少个元素,查找和插入操作所需的时间都是相同的,因此在大量数据的情况下,Set
集合也能够快速地查找重复元素。
代码示例:
代码逻辑:
-
判断数组是否为空: 首先通过条件语句判断了传入的两个数组是否为空,如果其中任意一个为空,则直接返回一个长度为0的数组,表示交集为空。
-
创建集合对象: 然后使用
HashSet
创建了两个集合对象set1
和resSet
,用于存储数组中的元素。set1
用来存储第一个数组nums1
中的元素,resSet
则用来存储两个数组的交集元素。 -
遍历第一个数组: 接着使用增强型 for 循环遍历第一个数组
nums1
,并将其中的元素逐个添加到set1
集合中。由于集合的特性是不允许重复元素,因此这样可以去除nums1
中的重复元素。 -
判断第二个数组元素是否在集合中: 然后再次使用增强型 for 循环遍历第二个数组
nums2
,并在遍历过程中判断集合set1
是否包含当前元素。如果包含,则将该元素添加到resSet
集合中。 -
转换为数组: 最后,创建一个新的数组
arr
,其长度为resSet
集合的大小,然后再次遍历resSet
集合中的元素,并将其逐个赋值给数组arr
。最终返回数组arr
,即为两个数组的交集。
leetcode做题截图:
注意!最后定义新数组时的取值范围,是集合的size而不是集合的length噢
这篇关于代码随想录算法练习Day14:两个数组的交集的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!