在 Python 中進行兩個陣列的交集運算


假設我們有兩個陣列 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]

更新時間:2020 年 4 月 28 日

5K+ 人瀏覽

開啟你的職業生涯

完成課程認證學

開始
廣告
© . All rights reserved.