这是来自 leetcode 的任务(两个总和) 给定一个整数数组 nums 和一个整数 target,返回两个数字的索引,使它们相加等于 target。 还有一个解决方案:
dict = {}
for i,n in enumerate(nums):
if n in dict:
return dict[n],i
dict[target-n]=i
它是如何工作的?
这里你只需创建一个字典 字典 = {}
您一一读取 nums 列表中的所有元素:enumerate() 函数为您提供列表中的索引 (
i
) 和相对值 (n
)
for i,n in enumerate(nums):
为了理解代码,我建议尝试理解之后的 if 块
if n in dict:
return dict[n],i
这就是关键
dict[target-n]=i
对于
nums
列表中的每个数字,您在字典中添加一个键。关键是你应该在n
中添加什么来达到目标(如果你有n
苹果,但你想要target
,你必须购买target-n
苹果)。在字典中,在键target-n
处,你记住实际的循环索引i
随着循环的进行,字典会增长:更多的键被添加到其中。在某个时刻,您可能会在
nums
列表中遇到一个值,该值已经是字典的键:达到目标所需的确切数字。
return dict[n],i
所以答案(if段)是:实际索引(
i
)和存储在字典中的索引。这两个索引是与目标相加的两个数字的索引。
抱歉我的英语不好,但我希望它有帮助。