2016-10-29 52 views
0

這裏是我的代碼,這應該返回45作爲答案,而不是我得到8。 此代碼適用於較小的列表。找到列表中最長的運行總和

我得到正確的答案這個名單[1,2,3,2,1] 6

def longest_run(L): 

    bestDec = 0 
    bestInc = 0 

    currentSum = 0 
    lastNum = 0 
    for i in L: 
     if i <= lastNum: 
      currentSum += i 
     else: 
      if currentSum > bestDec: 
       bestDec = currentSum 
      currentSum = i 
     lastNum = i 


    currentSum = 0 
    lastNum = 0 
    for i in L: 
     if i >= lastNum: 
      currentSum += i    
     else: 
      if currentSum > bestInc: 
       bestInc = currentSum 

      currentSum = i 
     lastNum = i 

    if bestDec >= bestInc: 
     return bestDec 
    else: 
     return bestInc 
L = [1, 2, 3, 4, 5, 6, 7, 8, 9]   
print(longest_run(L)) 
+1

你的問題不清楚。 「跑步」是什麼意思? (我們不應該檢查你的代碼來解決這個問題。)如果有多個相同的最大長度運行,應該返回什麼? –

+0

我使用類來解決這個期末考試問題,將其分解爲子問題。該問題要求您查找升序或降序值的最長運行(連續序列),假設L是整數列表。我有兩個具有類似行爲的類,除了一個反轉比較邏輯。這個超級類別處理所有其他事情。我會分享解決方案,除非在考試截止日期過後我不應該這樣做。 –

回答

0

如果你想找到整數列表的累積和,直到他們都在增加,怎麼樣:

def longest_run(L): 
    if len(L)==0: return 0 
    cs = L[0] 
    for i in range(1,len(L)): 
     if L[i]>L[i-1]: 
      cs+=L[i] 
     else: 
      break 
    return cs 
0

不是名單的工作,以及 [3,3,3,3,3,3,3,-10,1,2,3,4] 答案應該是11,但本代碼給出3