這個題目是兩個陣列i的公升級版本。它需要計算出交集的具體個數。
示例 1:
輸入:nums1 = [1,2,2,1], nums2 = [2,2]
輸出:[2,2]
示例 2:
輸入:nums1 = [4,9,5], nums2 = [9,4,9,8,4]
輸出:[4,9]
乙個hash表
set法
counter解法
class solution:
def intersect(self, nums1: list[int], nums2: list[int]) -> list[int]:
#兩個hash表
res1 = collections.defaultdict(int)
res2 = collections.defaultdict(int)
res =
if not nums1 or not nums2:
return
for i in nums1:
res1[i]+=1
for i in nums2:
res2[i]+=1
for key,value in res1.items():
if key in res2:
temp = min(value,res2[key])
res.extend([key]*temp)
return res
# 神奇解法
num1 = collections.counter(nums1)
num2 = collections.counter(nums2)
num = num1 & num2
return num.elements()
# 乙個hahs表
dic = collections.defaultdict(int)
res =
for i in nums1:
dic[i]+=1
for item in nums2:
if item in dic and dic[item]>=1:
dic[item]-=1
return res
#set法
temp = set(nums1)&set(nums2)
res =
for i in temp:
res.extend([i]*min(nums1.count(i),nums2.count(i)))
return res
總結:關於counter這個方法之後再寫一篇部落格詳細介紹,這個題目還有乙個解法就是雙指標和之前那個題目一毛一樣。如果涉及到出現次數的問題,一般情況還是用hash表。 leetcode 350兩個陣列的交集
1.題目描述 給定兩個陣列,編寫乙個函式來計算它們的交集。示例 1 輸入 nums1 1,2,2,1 nums2 2,2 輸出 2,2 示例 2 輸入 nums1 4,9,5 nums2 9,4,9,8,4 輸出 4,9 說明 輸出結果中每個元素出現的次數,應與元素在兩個陣列 現的次數一致。我們可以...
leetcode350 兩個陣列的交集
還是用了暴力演算法,因為別的寫不出來,效率極低,nnd,貼 class solution for int k 0 k n k return nice 之後是雜湊表的做法,首先找到乙個長度較小的陣列,進行遍歷,並將其中的元素放入雜湊表,並記錄個數。之後就遍歷第二個陣列,每遇到乙個雜湊表中存在的數,就將...
leetcode 350 兩個陣列的交集
這題是 兩個陣列的交集 問題的第二版,多了乙個 輸出結果中每個元素出現的次數,應與元素在兩個陣列 現次數的最小值一致。這個要求。但仍舊可以用雜湊法來做。對其中陣列建立雜湊表,其中鍵為元素值,值為元素頻率。遍歷另乙個陣列的元素,每在雜湊表中找到相同元素,那麼就把其對應頻率減1並把陣列當前元素放入答案陣...