Python 中两个数组的交集 II

pythonserver side programmingprogramming更新于 2025/11/2 2:52:17

假设我们有两个数组 A 和 B,这些数组中有几个元素。我们必须找到它们的交集。因此,如果 A = [1, 4, 5, 3, 6],且 B = [2, 3, 5, 7, 9],则交集将为 [3, 5]

要解决此问题,我们将遵循以下步骤 −

  • 取两个数组 A 和 B
  • 如果 A 的长度小于 B 的长度,则交换它们
  • 计算数组中元素的频率并将其存储到 m 中
  • 对于 B 中的每个元素 e,如果 e 存在于 m 中,并且频率非零,
    • 将频率 m[e] 减少 1
    • 将 e 插入结果数组中
  • 返回结果数组

示例

让我们看看下面的实现以便更好地理解 −

class Solution(object):
   def intersect(self, nums1, nums2):
      """
      :type nums1: List[int]
      :type nums2: List[int]
      :rtype: List[int]
      """
      m = {}
      if len(nums1)<len(nums2):
         nums1,nums2 = nums2,nums1
      for i in nums1:
         if i not in m:
            m[i] = 1
         else:
            m[i]+=1
      result = []
      for i in nums2:
         if i in m and m[i]:
            m[i]-=1
            result.append(i)
      return result
ob1 = Solution()
print(ob1.intersect([1,4,5,3,6], [2,3,5,7,9]))

输入

[1,4,5,3,6]
[2,3,5,7,9]

输出

[3,5]

相关文章


有用资源