[英]Find an idx with the maximum sum
所以我需要編寫一個遞歸程序,它返回一個索引,以便直到它的元素的總和是最大的。 例如列表[1,-5,9,-12,3,3,3,2]
,元素總和最大的 idx 為2
。 另一個例子:列表[1,-5,9,7]
,在這種情況下將返回的 idx 是3
。 如果有人知道該怎么做,或者知道有人在論壇中提出的類似問題,那將會很有幫助。 謝謝
您需要為總和輸入一個較低的估計值,這就是我使用 min(list_of_numbers)*100 的原因。 您可能需要對其進行修改,如果您可以使用 numpy,我建議將該值替換為 -np.inf
list_of_numbers = [1,-5,9,-12,3,3,3,2]
def maxSumId(list_of_numbers):
id_max = 0
sumVal = 0
maxVal = min(list_of_numbers)*100
for i,number in enumerate(list_of_numbers):
sumVal += number
if sumVal > maxVal:
maxVal = sumVal
id_max = i
return id_max
maxSumId(list_of_numbers)
您的遞歸可以輕松計算累積和,但它需要攜帶最大值及其索引才能返回索引而不是值。
# L:list, i:current index, s:current sum, mi:max sum index, ms:max sum value
def iMaxSum(L,i=0,s=0,mi=0,ms=None):
if i>=len(L): return mi # end of list return max index
if ms is None or L[i]+s>ms: # track max sum and its index
ms,mi = s + L[i],i
return iMaxSum(L,i+1,s+L[i],mi,ms) # next item,index,sum
print(iMaxSum([1,-5,9,-12,3,3,3,2])) # 2
print(iMaxSum([1,-5,9,7])) # 3
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.