給定兩個數(shù)組,寫一個方法來計算它們的交集撞芍。
例如:
給定 nums1 = [1, 2, 2, 1], nums2 = [2, 2], 返回 [2, 2].
注意:
輸出結(jié)果中每個元素出現(xiàn)的次數(shù),應(yīng)與元素在兩個數(shù)組中出現(xiàn)的次數(shù)一致锌历。
我們可以不考慮輸出結(jié)果的順序侈离。
跟進:
如果給定的數(shù)組已經(jīng)排好序呢树绩?你將如何優(yōu)化你的算法萨脑?
如果 nums1 的大小比 nums2 小很多,哪種方法更優(yōu)饺饭?
如果nums2的元素存儲在磁盤上渤早,內(nèi)存是有限的,你不能一次加載所有的元素到內(nèi)存中瘫俊,你該怎么辦鹊杖?
代碼
class Solution:
def intersect(self, nums1, nums2):
"""
:type nums1: List[int]
:type nums2: List[int]
:rtype: List[int]
"""
dic = dict()
for i in nums1:
if i in dic:
dic[i] += 1
else:
dic[i] = 1
n = list()
for i in nums2:
if i in dic.keys() and dic[i] != 0:
dic[i] -= 1
n.append(i)
return n
if __name__ == '__main__':
s = Solution()
a = s.intersect([1,2,2,3],[2,2])
print(a)