leetcode twosum问题: 给定一个整数数组,返回两个数字的索引,使它们相加到特定目标。
您可以假设每个输入只有一个解决方案,并且您可能不会两次使用相同的元素。
我读了某人的python代码如下:
vis = {}
for i,num in enumerate(nums):
diff = target - num
if diff in vis:
return[vis[diff],i]
vis[num] = i
我可以理解这段代码背后的大部分逻辑。但是为什么最后一行必须按此顺序排列?在return语句之后进行赋值似乎很奇怪。 所以我试图将它移动到其他地方,但这将输出null。为什么最后一行必须在那个地方?
答案 0 :(得分:0)
return
语句位于if
语句中,因此仅当diff
位于vis
时才会执行,即,当您找到diff
时你想要的,nums[diff] + nums[i] == target
是True
。如果没有发生,那么只有最后的声明才会被执行。因此,它会添加diff
以供稍后进行比较,并继续进行下一次迭代。