这段代码如何从数组中找到两个等于目标的数字?

问题描述 投票:0回答:1

这是来自 leetcode 的任务(两个总和) 给定一个整数数组 nums 和一个整数 target,返回两个数字的索引,使它们相加等于 target。 还有一个解决方案:

dict = {}
for i,n in enumerate(nums):
    if n in dict:
        return dict[n],i
    dict[target-n]=i

它是如何工作的?

python
1个回答
0
投票

这里你只需创建一个字典 字典 = {}

您一一读取 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
)和存储在字典中的索引。这两个索引是与目标相加的两个数字的索引。

抱歉我的英语不好,但我希望它有帮助。

© www.soinside.com 2019 - 2024. All rights reserved.