繁体   English   中英

python嵌套列表:返回总和最大的子数组

[英]python nested list: returning the subarray with the largest sum

这是我自己著名的连续和问题的修改。 给定python中嵌套子数组的数组,如何最佳地返回总和最大的子数组? 我想这为O(n)的实现,它总是给我的最后一个子阵,但我不明白为什么。

def maxsublist(arr):
    curr = sum(arr[0])
    ind = 0
    for i,j in enumerate(arr):
        if sum(j)>curr:
            ind = i
    return arr[ind]

maxsublist([[1,2],[4,5],[5,96,1],[1,2,3]])

返回[1,2,3]。

***注:我有使用Python的排序功能更好的版本,但这种感觉有点太像作弊。

def maxsublist2(arr):
    sortedlists = sorted(arr, key= lambda x: sum(i for i in x))
    return sortedlists[-1]

这听起来根本不像连续和问题。 这应该足够了:

max(arr, key=sum)

代码中的错误仅是因为您忘记与ind同时更新curr

找到总和大于当前值的数组时,需要更新curr

if sum(j) > curr:
    ind = i
    curr = sum(j)

顺便说一句,您可能想创建一些局部变量来存储sum(j) ,以免两次对同一事物求和。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM