所以我按照教程來學習如何完成2總和,我明白每一行的含義,但我不明白為什么diffs[list[i]]回傳0索引。我使用當前引數完成了演算法,并在回傳索引時i得出結論3
diffs = {} # Make a hash map to store values
for i in range(len(list)): # Iterate through list
if list[i] in diffs: # If the number you are on is in the has map
return [diffs[list[i]], i] # return indexes
else:
diffs[target - list[i]] = i
print(twosum([2, 11, 15, 7], 9))
uj5u.com熱心網友回復:
def twosum(nums, target):
diffs = {} # Make a hash map to store values
for i in range(len(nums)): # Iterate through list
if nums[i] in diffs: # If the number you are on is in the has map
return [diffs[nums[i]], i] # return indexes
else:
diffs[target - nums[i]] = i
print(i, diffs)
In [4]: print(twosum([2, 11, 15, 7], 9))
0 {7: 0}
1 {7: 0, -2: 1}
2 {7: 0, -2: 1, -6: 2}
[0, 3]
從上面的輸出可以看出,在字典中7有索引0。它是添加到字典中的第一個元素。原因是您正在保存字典中的差異。target - nums[0]就是7在這種情況下,因為nums[0]是2。
然后,當您到達最后一個元素時,即7,您會在字典中找到它的索引為0。那就是diffs[nums[3]] == diffs[7] == 0。然后你回來了[diffs[nums[i]], i] == [diffs[nums[3]], 3] == [diffs[7], 3] == [0, 3]。
另外,不要使用名稱list來命名變數。
uj5u.com熱心網友回復:
在回圈的第一次運行中。diffs[target - list[i]] = i將差異設定為 {7: 0}。這就是 diffs[list[3]] 計算結果為 0 的方式。例如。
diffs[list[3]]
diffs[7]
0
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/374295.html
下一篇:在N維空間中均勻分布點的演算法
