3.2两个数组的交集

文章介绍了如何使用Python实现两个整数列表的交集,利用哈希表存储元素并计算其时间复杂度(O(n1+n2+min(n1,n2)+k))和空间复杂度(O(n1+n2+min(n1,n2)+k)),重点在于算法分析。
摘要由CSDN通过智能技术生成

代码很简单:

class Solution:
    def intersection(self, nums1: List[int], nums2: List[int]) -> List[int]:
            # 使用哈希表存储一个数组中的所有元素
            set1 = set(nums1)
            set2 = set(nums2)
            set3 = set1&set2
            return list(set3)

集合:无序的, 不可随机访问的, 不可重复的元素集合

时间复杂度分析:

  • 首先,构建集合 `set1` 和 `set2` 分别需要遍历 `nums1` 和 `nums2`,时间复杂度为 O(n1 + n2),其中 n1 和 n2 分别是 `nums1` 和 `nums2` 的长度。
  • 执行集合的交集操作 `set1 & set2` 的时间复杂度为 O(min(n1, n2)),其中 n1 和 n2 分别是 `set1` 和 `set2` 的长度。
  • 最后,将交集结果转换为列表需要 O(k) 的时间,其中 k 是交集结果的长度。

综上所述,代码的总时间复杂度为 O(n1 + n2 + min(n1, n2) + k)。

空间复杂度分析:

  • 创建集合 `set1` 和 `set2` 分别需要 O(n1) 和 O(n2) 的空间,其中 n1 和 n2 分别是 `nums1` 和 `nums2` 的长度。
  • 创建集合 `set3` 存储交集结果需要 O(min(n1, n2)) 的空间。
  • 将交集结果转换为列表需要 O(k) 的空间,其中 k 是交集结果的长度。

综上所述,代码的总空间复杂度为 O(n1 + n2 + min(n1, n2) + k)。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值