1. 程式人生 > 其它 >演算法題:兩個陣列的交集 II

演算法題:兩個陣列的交集 II

技術標籤:leetcodeleetcode演算法資料結構python

350. 兩個陣列的交集 II

題目描述

給定兩個陣列,編寫一個函式來計算它們的交集。

說明:

輸出結果中每個元素出現的次數,應與元素在兩個陣列中出現次數的最小值一致。
我們可以不考慮輸出結果的順序。

示例:

示例 1:
輸入:nums1 = [1,2,2,1], nums2 = [2,2]
輸出:[2,2]

示例 2:
輸入:nums1 = [4,9,5], nums2 = [9,4,9,8,4]
輸出:[4,9]

進階:

如果給定的陣列已經排好序呢?你將如何優化你的演算法?

如果 nums1 的大小比 nums2 小很多,哪種方法更優?
如果 nums2 的元素儲存在磁碟上,記憶體是有限的,並且你不能一次載入所有的元素到記憶體中,你該怎麼辦?

程式碼

class Solution:
    def intersect(self, nums1, nums2):
        new_nums = []
        nums1.sort()
        nums2.sort()
        i,j = 0,0
        while i <len(nums1) and j < len(nums2):
            if nums1[
i]<nums2[j]: i+=1 elif nums1[i]==nums2[j]: new_nums.append(nums1[i]) i+=1 j+=1 else: j+=1 return new_nums

執行效率

61 個測試用例
執行用時: 48 ms
記憶體消耗: 12.8 MB

解題思路及程式碼來源:博主
題目來源:力扣(LeetCode)
題目連結:https://leetcode-cn.com/problems/intersection-of-two-arrays-ii

題目著作權歸領釦網路所有。商業轉載請聯絡官方授權,非商業轉載請註明出處。