Leetcode‘二和’题修改

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

刚刚尝试修改 leetcode 'Two Sum' 问题,使其输出为: '第一个数字的索引' + '剩余的数字的索引,加起来达到目标'

第一个数字的索引,即

[0]
始终是参考。

因此,

[2,3,4,6,7,8],10
永远是
[0,5]

[3,2,5,1,8,90,34,78,23],93
因此
[0,5]

其实可以通过稍微修改原来的解决方案来实现。

def sumri(num,target):
    seen = {}
    
    for i in range(len(num)):
        diff = target - num[0]
        seen[num[i]] = i
        
        if diff in seen:
            return (seen[num[0]],seen[diff])

但是,当我尝试放置时:

        if diff in seen:
            return (seen[num[0]],seen[diff])
        else:
            return 'sorry nothing adds up after 0'

每种情况下的输出都会转到

else
。 我错过了什么?

尝试不包括

else
,效果很好。 我只是想找出为什么执行直接进入
else
即使在arr中找到相关数字之后。

python sum
1个回答
0
投票

经过修改,您的代码将始终在循环的

first
迭代中执行return。除非您完成了循环的所有迭代,否则您无法知道答案是否是否定的。

修复方法很简单:将

return
语句放在 after 循环中。如果执行到达那里,则意味着
if
条件从未为真,不在循环的任何迭代中:

def sumri(num,target):
    seen = {}
    
    for i in range(len(num)):
        diff = target - num[0]
        seen[num[i]] = i
        
        if diff in seen:
            return (seen[num[0]],seen[diff])

    return 'sorry nothing adds up after 0'
© www.soinside.com 2019 - 2024. All rights reserved.