找到列表中最长的运行总和

时间:2016-10-29 16:28:56

标签: python python-3.x

这是我的代码,这应该返回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))

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

不能正常工作 列表[3,3,3,3,3,3,3,10,1,2,3,4] 答案应该是11但这段代码给出3