不知道为什么它返回[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))