一、暴力窮舉
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)