为了账号安全,请及时绑定邮箱和手机立即绑定

python 嵌套两个for循环出现问题?

python 嵌套两个for循环出现问题?

狐的传说 2018-11-17 16:40:43
题目要求:给定 nums = [2, 7, 11, 15], target = 9因为 nums[0] + nums[1] = 2 + 7 = 9所以返回 index[0, 1]题目来源:leetcode上的sum求和个人代码def twoSum(nums, target):    l = []  # 外部栈存储     s = 0  # 外部循环次数     for _ in nums:        i = 0         s = s + 1         p = nums.pop(0)         l.append(p)         for v in nums:            if v == target - p:                 return [len(l) - 1, s + i]            i = i + 1个人思路与问题我的想法,是取出1个元素放入外部栈,并记录其值,然后在剩下的列表中遍历满足条件的元素.s,i,为了标记满足要求的元素的序号作用.验证过程中发现,每当我输入print(twoSum([1,3,3,5,2],7))调试结果就会显示None,具体就是当满足的两个数都在输入列表末尾,就会出现None.python新手,请多指教.
查看完整描述

1 回答

?
HUWWW

TA贡献1874条经验 获得超12个赞

先上结论,问题应该出在for _ in nums: 和nums.pop(0)同时使用。这会导致你每次迭代取的一个值是从一个不断缩小的列表里取的。你可以debugger或者把每次循环的_ 给print出来看,你会发现每次循环都跳了一次。

顺便给出一个同样复杂度n^2但比较容易理解的solution:

def twoSum(nums, target):
    for i in range(len(nums)):
        j = i + 1
        tmp = nums[i] + nums[j]        if tmp == target:            return [i, j]

print(twoSum([1,4,3,5,2],7))


查看完整回答
反对 回复 2018-11-17
  • 1 回答
  • 0 关注
  • 2235 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信