Leetcode第一题为啥这样不行?

class Solution(object):
def twoSum(self, nums, target):
list1 = []
for m in range(len(nums)):
n = target - nums[m]
if n in nums:
list1.append(m)
for o in range(len(nums)):
if nums[o] == n:
list1.append(o)
print(list1)
break

a = Solution()
a.twoSum([2,7,11,15],9)

我是把最后两行删了,传进Leetcode的,在pycharm运行有用,第一次写实验,希望大家给我解答哪里有问题

img

因为你没有检查题目里的另外两种情况(列在后面)
按照你的思路增加了以下代码,你看一下

class Solution(object):
    def twoSum(self, nums, target):
        list1 = []
        for m in range(len(nums)):
            n = target - nums[m]
            temp = nums.pop(m) # 删除元素,避免检查重复位置
            if n in nums:
                list1.append(m) # 把元素加回来
            nums.insert(m, temp)
            for o in range(len(nums)):
                if nums[o] == n and o!= m: # 排除两个因子在同一位置
                    list1.append(o)
                    print(list1)
                    break
            if len(list1)>1:break # 上面那个break只能跳出内循环,需要再跳出外循环
a = Solution()
a.twoSum([2,7,11,15],9)
a.twoSum([3,2,4],6)
a.twoSum([3,3],6)