Python LeetCode上的二和解

Python LeetCode上的二和解,python,algorithm,data-structures,Python,Algorithm,Data Structures,我目前在LeetCode上,正在研究二和问题的解决方案。这是说明书 “给定一个整数数组nums和一个整数目标,返回两个数字的索引,使它们相加到目标。 您可以假设每个输入都有一个解决方案,并且不能两次使用同一个元素。 您可以按任意顺序返回答案。“ 我遇到了几个解决方案,我看到了这个答案: def twoSum(self, nums: [int], target: int) -> tuple: num2idx = {} for idx, val in enume

我目前在LeetCode上,正在研究二和问题的解决方案。这是说明书

“给定一个整数数组nums和一个整数目标,返回两个数字的索引,使它们相加到目标。 您可以假设每个输入都有一个解决方案,并且不能两次使用同一个元素。 您可以按任意顺序返回答案。“

我遇到了几个解决方案,我看到了这个答案:

def twoSum(self, nums: [int], target: int) -> tuple:
    num2idx = {}        
    for idx, val in enumerate(nums):
        if target - val in num2idx:
            return num2idx[target - val], idx
        num2idx[val] = idx
我不确定的是

if target - val in num2idx:
  return num2idx[target - val], idx
num2idx[val] = idx

这将如何准确地返回与目标相加的两个数字索引?在我看来,返回的仅仅是“target val”以及当前正在迭代的num的索引。

num2idx
包含每个数字的位置,而不是数字本身。声明

 return num2idx[target - val], idx

返回当前数字的索引,以及构成当前数字和目标之间差异的数字的索引。

您是否注意到
num2idx
是一个字典?@PM77-1是。我看到num2idx是一个字典,“return num2idx[target-val],idx”获取与“target-value”相等的键。它获取所提供键的值。现在你需要看看这本字典是如何填充的。在发布之前,你跟踪了代码,对吗?您输入
print
语句来显示变量值,对吗?您在哪里对输出感到困惑?请用这项工作更新你的帖子。“教我这门语言”是一个离题的话题,目的是让你在将来写出格式良好的问题。请记住本网站的章程。