为什么这个休息不起作用?我应该得到 [0,1] 返回而不是 [0,1,1,0]



不知道为什么它返回[0,1,1,0]而不是[0,1]

def TwoSum(nums,target):
        c = []
        for i in range(0,len(nums)):
            for j in range(0,len(nums)):
                if nums[i] + nums[j] == target:
                    c.append(i)
                    c.append(j)
                    break     
        return c  

print(TwoSum([2, 7, 11, 15], 9))

简单地说,你的代码的问题在于它扫描(2,7(两次:向前和向后。

首先,它在外部 for 循环中选择 2 并发现 7 有效,因为 2 + 7 = 9。因此,它将 2 和 7 的位置添加到 c。现在, c = [0, 1]

但随后它在外部 for 循环中选择 7 并发现 2 有效,因为 7 + 2 = 9。因此,它将 7 和 2 的位置添加到 c。现在, c = [0, 1, 1, 0]

break只停止内部循环,如果你想立即返回,只需使用return c

请让我知道这是否有效:

def TwoSum(nums,target):
        c = []
        for i in range(0,len(nums)):
            for j in range(0,len(nums)):
                if nums[i] + nums[j] == target:
                    c.append(i)
                    c.append(j)
                    return c     
        return c  

print(TwoSum([2, 7, 11, 15], 9))

相关内容

最新更新