演算法上路之開篇

2021-09-28 13:22:54 字數 1740 閱讀 1586

題目:

給定乙個整數陣列 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 另乙個因素是因為想進大廠?演算法必...