給定兩個陣列,編寫乙個函式來計算它們的交集。
示例 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...