leetcode---------求两个数组的交集(python)

本文介绍了解决两个数组交集问题的两种方法。一种是利用set结构进行求解,官方推荐此方法;另一种是在两个数组中查找公共元素并返回。文章通过示例详细解释了每种方法的实现过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

**问题描述:给定两个数组,编写一个函数来计算它们的交集。
示例1
输入: nums1 = [1,2,2,1], nums2 = [2,2]
输出: [2]
示例2
输入: nums1 = [4,9,5], nums2 = [9,4,9,8,4]
输出: [9,4]
官方解题思路
由于问题中的元素是唯一的,所以我们只关心元素的有无,那么我们可以使用 set 这个结构。首先将 nums1 的所有数据存入 set 中,再将 nums2 的所有数组也存入 set 中,最后求交集即可。
官方解题代码:

class Solution:

    def intersection(self, nums1, nums2):
        """
        :type nums1: List[int]
        :type nums2: List[int]
        :rtype: List[int]
        """
        a = set(nums1)
        b = set(nums2)
        c = a & b
        return list(c)

其它解题方法:

class Solution:
    def intersection(self, nums1, nums2):
        res = list() 
        if len(nums1) <= len(nums2):
            small_nums = nums1
            large_nums = nums2
        else:
            small_nums = nums2
            large_nums = nums1
            
        for i in large_nums :
            if i in small_nums:
                if i not in res:
                    res.append(i)
                    small_nums.remove(i)
        return res

若要求输入: nums1 = [1,2,2,1], nums2 = [2,2]
输出: [2,2]

则将其它解题方法中的if not i in res:去掉即可~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值