leetcode兩數(shù)之和—python

一、暴力窮舉

for i,num in enumerate(nums):

??? for j,num2 in enumerate(nums[i+1:]):

? ?? ? ? if num == target - num2:

? ?? ? ? ? ? return(i,j)

第一次提交最后一個數(shù)據(jù)超時,時間復雜度O(n^2)【正常應該不會超時才對】


二、字典優(yōu)化

dic = {}

?l = len(nums)

?for i in range(l):

? ?? if target - nums[i] in dic:

? ? ? ?? return(dic[target-nums[i]],i)

? ??? else:

? ? ?? ? dic[nums[i]] = i

把第i個數(shù)和它的位置存在字典中,看list中后續(xù)的數(shù)與之相加是否等于target

記錄一個錯誤的想法——index返回的是num第一次出現(xiàn)的位置,則數(shù)據(jù)如3+3=6就會出錯

#dic = {}

#for numin nums:

#if target - numin dic:

#print(dic[target-num],nums.index(num))

#break

#? ? else:

#dic[num] = nums.index(num)

最后編輯于
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

友情鏈接更多精彩內(nèi)容