題目:
給定乙個整數陣列 nums 和乙個目標值 target,請你在該陣列中找出和為目標值的那 兩個 整數,並返回他們的陣列下標。
你可以假設每種輸入只會對應乙個答案。但是,你不能重複利用這個陣列中同樣的元素。
示例:給定 nums = [2, 7, 11, 15], target = 9
因為 nums[0] + nums[1] = 2 + 7 = 9
所以返回 [0, 1]
迴圈遍歷nums中的每乙個num,用target - num 得到乙個數,然後看是否在nums中存在,存在則找出下標。
**執行不通過,因為如果nums是[3,4],理論上應該返回none,但是因為沒有判斷 i 和 j 是否相等
錯誤**如下:
def
twosum
(nums, target)
: lens =
len(nums)
j=-1
for i in
range
(lens):if
(target - nums[i]
)in nums:
j = nums.index(target - nums[i]
)break
if j>=0:
return
[i,j]
print
(twosum([3
,4],
6))
修改思路:
判斷 i 和 j
修改過後的**:
def
twosum
(nums, target)
: lens =
len(nums)
j=-1
for i in
range
(lens):if
(target - nums[i]
)in nums:
if(nums.count(target - nums[i])==
1)&(target - nums[i]
== nums[i]
)continue
else
: j = nums.index(target - nums[i]
,i+1
)break
if j>=0:
return
[i,j]
else
:return
def
twosum_2
(nums, target)
: q =
for key,num in
enumerate
(nums)
: q[num]
= key
for i,num in
enumerate
(nums)
: j = q.get(target - num)
print
(j)if j is
notnone
and i!=j:
return
(i,j)
print
(twosum_2([2
,2,2
],4)
)
b=
print
(b.get(2)
)
結果為4 共識演算法之開篇
初識共識演算法,還是在關注位元幣的時候。共識演算法是區塊鏈的核心,因此想要真正弄懂什麼是區塊鏈,首先就要理解什麼是共識演算法,為什麼要用共識演算法。共識演算法並不是伴隨著位元幣的產生而出現的。早在 1997年 adam back 就設計出了hashcash,可以認為是工作量證明的雛形,最初是為了預防...
演算法交作業之開篇 一
首先解釋下標題的含義 開篇 今天這篇博文是關於陣列查詢的,很簡單。演算法是計算機的生命。沒有演算法,就沒有軟體,計算機也就成了乙個冰冷的機器,沒有什麼實用價值。很多人認為,演算法是數學的內容,學起來特別麻煩。我們不能認為這種觀點是錯誤的。但是我們也知道,軟體是一種復合的技術,如果乙個人只知道演算法,...
演算法開篇 大綱
最近一直在刷演算法題,演算法平時工作用的很少那為啥子要刷嘞?演算法是後端職級高階程式猿必備之技能,跟框架學習是在不同維度,也無關聯,但是如果你只會使用arrays.sort list 除非你是個剛入行的應屆,不然以後你會慢慢發現這個圈子與我格格不入,怨念極深o o 另乙個因素是因為想進大廠?演算法必...