哈希算法题目:两个数组的交集
字数 972 2025-10-27 11:27:25

哈希算法题目:两个数组的交集

题目描述:
给定两个整数数组 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:理解问题核心要求

  • 我们需要找出两个数组中都出现的数字。
  • 结果中每个数字只能出现一次,不能有重复。
  • 结果的顺序不重要。

步骤 2:选择合适的数据结构

  • 由于结果需要去重,我们可以考虑使用哈希集合(HashSet)这种自动去重的数据结构。
  • 哈希集合能够以平均 O(1) 的时间复杂度进行元素的查找和插入,非常高效。

步骤 3:具体算法思路

  1. 创建第一个哈希集合 set1,遍历数组 nums1,将其所有元素存入 set1。这一步会自动去除 nums1 中的重复元素。
  2. 创建第二个哈希集合 resultSet,用于存放最终的交集结果。
  3. 遍历数组 nums2,对于 nums2 中的每个元素,检查它是否存在于 set1 中:
    • 如果存在,说明这个元素是公共元素,将其添加到 resultSet 中。由于 resultSet 是集合,重复添加同一元素不会导致结果重复。
  4. 遍历结束后,resultSet 中存储的就是我们要求的、去重后的交集元素。
  5. 将 resultSet 转换成一个数组作为最终结果返回。

步骤 4:复杂度分析

  • 时间复杂度:O(m + n),其中 m 和 n 分别是数组 nums1 和 nums2 的长度。我们分别对两个数组进行了一次遍历,而哈希集合的查找操作是 O(1) 的。
  • 空间复杂度:O(m),在最坏情况下(nums1中所有元素都不重复),我们需要使用 O(m) 的空间来存储 set1。resultSet 使用的空间最多为 O(min(m, n))。

步骤 5:关键点与扩展

  • 关键点在于利用哈希集合的“唯一性”和“快速查找”特性,高效地完成去重和判断元素是否存在。
  • 如果给定的数组已经是有序的,也可以使用双指针的方法来解决,但哈希法在数组无序时是更通用和直接的选择。
哈希算法题目:两个数组的交集 题目描述: 给定两个整数数组 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:理解问题核心要求 我们需要找出两个数组中都出现的数字。 结果中每个数字只能出现一次,不能有重复。 结果的顺序不重要。 步骤 2:选择合适的数据结构 由于结果需要去重,我们可以考虑使用哈希集合(HashSet)这种自动去重的数据结构。 哈希集合能够以平均 O(1) 的时间复杂度进行元素的查找和插入,非常高效。 步骤 3:具体算法思路 创建第一个哈希集合 set1,遍历数组 nums1,将其所有元素存入 set1。这一步会自动去除 nums1 中的重复元素。 创建第二个哈希集合 resultSet,用于存放最终的交集结果。 遍历数组 nums2,对于 nums2 中的每个元素,检查它是否存在于 set1 中: 如果存在,说明这个元素是公共元素,将其添加到 resultSet 中。由于 resultSet 是集合,重复添加同一元素不会导致结果重复。 遍历结束后,resultSet 中存储的就是我们要求的、去重后的交集元素。 将 resultSet 转换成一个数组作为最终结果返回。 步骤 4:复杂度分析 时间复杂度:O(m + n),其中 m 和 n 分别是数组 nums1 和 nums2 的长度。我们分别对两个数组进行了一次遍历,而哈希集合的查找操作是 O(1) 的。 空间复杂度:O(m),在最坏情况下(nums1中所有元素都不重复),我们需要使用 O(m) 的空间来存储 set1。resultSet 使用的空间最多为 O(min(m, n))。 步骤 5:关键点与扩展 关键点在于利用哈希集合的“唯一性”和“快速查找”特性,高效地完成去重和判断元素是否存在。 如果给定的数组已经是有序的,也可以使用双指针的方法来解决,但哈希法在数组无序时是更通用和直接的选择。