亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

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 關注
  • 2287 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號