遇到了这个leet代码。
prevMap = {} #Value:Index
for i,n in enmuerate(nums):
diff = target - n
if diff in prevMap:
return (prevMap[diff],i)
prevMap[n] = i
这是使用哈希图的著名二和问题的摘录。
我是 Python 哈希图的新手,因此没有意识到您可以使用"in"函数直接从字典/哈希图中查找值。但是,我不明白的是最后两行。 倒数第二行试图返回哈希映射中值的索引。根据我过去所知道的,hashMap[index] = value不是应该相反吗?相反的hashMap[value] = index
也有效吗?
至于最后一行,我们试图将列表nums
放入哈希图中。在这种情况下,它不应该是prevMap[i] = n
,因为我们试图将值 n 映射到哈希映射的索引 i 中?
谢谢。
hashMap[index] = value?相反的方法是否也有效,即hashMap[value] = index?
至于最后一行,我们试图将列表编号放入哈希图中。在这种情况下,它不应该是prevMap[i] = n,因为我们试图将值n映射到哈希映射的索引i中吗?
谢谢。
你把事情搞混了。在倒数第二行中,您将返回字典中存储的列表内的索引元组,其中一个值是两个总和的一部分,i
它又是列表中的索引 - 而不是两个总和的第二个总和的字典。 在最后一行中,将索引存储在特定值的列表中。
我相信您混淆了列表/词典的工作方式。不能按索引访问字典。仅仅因为语法与[]
相同并不意味着访问值的方式相同。
l = ["val1", "val2", "val3", "val4"]
d = {
"key1": "val1",
"key2": "val2"
}
d_with_keys_defined_as_index = {
0: "val1",
1: "val2"
}
# Access first element of list
print(l[0])
# KeyError, a dictionary cannot be accessed by index (except index is explicitly defined as a key)
print(d[0])
# access value by key
print(d["key1"])
# now 0 is explicitly defined as a key, so we can access it using that key. This is still not an access by index though
print(d_with_keys_defined_as_index[0])