LeetCode 349 350 兩個陣列的交集

2021-09-25 21:06:49 字數 1491 閱讀 5203

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

示例 1:

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

輸入:nums1 = [4,9,5], nums2 = [9,4,9,8,4]輸出:[9,4]
說明:

很簡單的判斷方法,好像效率不是很高,這樣的話,輸出結果的序列也是固定的。使用set的&也是可以的,效率很高。

class solution:

def intersection(self, nums1: list[int], nums2: list[int]) -> list[int]:

result =

if len(nums1)>=len(nums2):

minnum,maxnum = nums2,nums1

else:

minnum, maxnum = nums1, nums2

for i in range(len(minnum)):

if minnum[i] in maxnum and minnum[i] not in result:

return result

因為350和這個題很相像,只是350要輸出全部的個數,一開始我還覺得更簡單了,只要把349的"not in result"去掉即可,後來遇到了這個例子:

× wrong answer

× 34/61 cases passed (n/a)

× testcase: '[1,2]\n[1,1]'

× answer: [1,1]

× expected_answer: [1]

× stdout:

還是用雜湊做吧:

class solution:

def intersect(self, nums1: list[int], nums2: list[int]) -> list[int]:

result, dict1 = ,{}

for i in range(len(nums1)):

if dict1.get(nums1[i]) is none:

dict1[nums1[i]] = 1

else:

dict1[nums1[i]] += 1

print(dict)

for i in range(len(nums2)):

if dict1.get(nums2[i]) is not none and dict1[nums2[i]] !=0:

dict1[nums2[i]]-=1

return result

LeetCode 349,350 兩個陣列的交集

leetcode 349 兩個陣列的交集 leetcode 350 兩個陣列的交集ii 兩題都是找交集,349要比350難一些,需要考慮去重問題。349 leetcode把該題放在了二分查詢類別底下,被誤導了,一開始思路是從nums1中找nums2的值,由於兩個陣列存在重複數,實際使用直接遍歷查詢十...

LeetCode 兩數之和

基礎不好,筆試 題沒做好,校招沒offer,趕緊來刷題 這裡採用兩種方法來做,比較效能。nums i for i in range 1,100000000 target 3 class solution object deftwosum self,nums,target if len nums 1 ...

LeetCode 兩數相加

題目來自leetcode 注意幾點 鍊錶對應結點相加時增加前乙個結點的進製,並儲存下乙個結點的進製 兩個鍊錶長度不一致時,要處理較長鍊錶剩餘的高位和進製計算的值 如果最高位計算時還產生進製,則還需要新增乙個額外結點。definition for singly linked list.struct l...