iLuvMeat - 1 year ago 341
Python Question

# Find sum of longest run in list

Here's my code, this should return 45 as answer instead I'm getting 8.
This code works fine for smaller lists.

I get proper answer for this list [1, 2, 3, 2, 1] as 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))
``````

If you want to find the cumulative sum of a list of integers till they are increasing, what about:

``````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
``````
Recommended from our users: Dynamic Network Monitoring from WhatsUp Gold from IPSwitch. Free Download