如何理解Twosum的这个Python代码

时间:2017-08-25 05:21:28

标签: python

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。为什么最后一行必须在那个地方?

1 个答案:

答案 0 :(得分:0)

return语句位于if语句中,因此仅当diff位于vis时才会执行,即,当您找到diff时你想要的,nums[diff] + nums[i] == targetTrue。如果没有发生,那么只有最后的声明才会被执行。因此,它会添加diff以供稍后进行比较,并继续进行下一次迭代。