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

why is this break not working? i should get [0,1] return not [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))

break只停止内循环,如果你想立即return,使用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))

简而言之,您的代码存在的问题是它扫描 (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]