すべての連続サブシーケンスの最大和の計算について


以下は,すべての連続サブシーケンスの計算に関する最大および問題の中で最も暴力的な方法である.
    def lagerset_sum(arr)
        res = arr[0]
        sum = res
        for i in range(1,len(arr)):
            if sum>0:
                sum = sum + arr[i]
            else:
                sum = arr[i]
            if sum>res:
                res = sum
        return res

しかし、このコードに基づいて再最適化することができます.
if文の比較をmax()で処理する問題
def largest_sum(arr):
    sum = max_sum = 0
    for n in arr:
        sum = max(sum + n, 0)
        max_sum = max(sum, max_sum)
    return max_sum

最適化後、彼のサイクル数とコード量が大幅に減少したことがわかります.