from typing import List
class Solution:
def intersect(self, nums1: List[int], nums2: List[int]) -> List[int]:
# 記錄兩個(gè)數(shù)組中每個(gè)數(shù)字出現(xiàn)的次數(shù)
result1 = {}
result2 = {}
# 遍歷兩個(gè)數(shù)組,然后將其數(shù)字出現(xiàn)次數(shù)添加入字典中
for i in nums1:
if i not in result1.keys():
result1[i] = 1
else:
result1[i] += 1
for i in nums2:
if i not in result2.keys():
result2[i] = 1
else:
result2[i] += 1
# 將兩個(gè)字典的鍵取出
k1 = [i for i in result1.keys()]
k2 = [i for i in result2.keys()]
# 求兩個(gè)字典鍵的交集
k = set(k1) & set(k2)
# 結(jié)果列表
r = []
# 同一個(gè)鍵,代表兩個(gè)列表中都有出現(xiàn),然后取最小的值為出現(xiàn)的次數(shù),然后用列表的extend方法添加入結(jié)果列表中
for i in k:
m = min(result1[i], result2[i])
r.extend([i]*m)
return r
if __name__ == "__main__":
s = Solution()
nums1 = [1,2,2,1]
nums2 = [2,2]
r1 = s.intersect(nums1, nums2)
print(r1)
給定兩個(gè)數(shù)組,編寫一個(gè)函數(shù)來(lái)計(jì)算它們的交集。
感覺(jué)只要用字典,速度都不會(huì)慢,因?yàn)樽值洳檎冶闅v都好快
更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061
微信掃一掃加我為好友
QQ號(hào)聯(lián)系: 360901061
您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長(zhǎng)非常感激您!手機(jī)微信長(zhǎng)按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對(duì)您有幫助就好】元

