これは、有名な連続和問題の私自身の修正です。ネストされたサブアレイのPythonで配列が与えられた場合、どのようにして最大の合計を持つサブアレイを最適に返すことができますか?私はこのO(n)実装を試してみましたが、これは常に最後のサブ配列を与えてくれましたが、なぜそれが見えません。python入れ子リスト:最大の和を持つ部分配列を返します
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]
あなたの関数がうまくいかないのは、 'curr = sum(j)'を決してループの中に設定しないためです。 –