[英]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.