首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >查找具有最大和的idx

查找具有最大和的idx
EN

Stack Overflow用户
提问于 2021-02-24 19:03:50
回答 2查看 47关注 0票数 0

所以我需要写一个返回索引的递归程序,这样元素的和就是最大的。例如列表[1,-5,9,-12,3,3,3,2],元素总和最大的idx是2。另一个例子:列表[1,-5,9,7],在本例中返回的idx是3。如果有人知道怎么做,或者知道一个类似的问题,有人在论坛上问,这将是有帮助的。谢谢

EN

回答 2

Stack Overflow用户

发布于 2021-02-24 19:12:42

您需要输入一个较低的总和估计值,这就是我使用min(list_of_numbers)*100的原因。您可能需要修改它,如果您可以使用numpy,我建议使用-np.inf替换该值

代码语言:javascript
复制
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)
票数 0
EN

Stack Overflow用户

发布于 2021-03-01 03:26:02

您的递归可以很容易地计算累积和,但它需要携带最大值及其索引,以便返回索引而不是值。

代码语言:javascript
复制
# 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
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66349565

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档