最大子序和

a = [-2, 1, 3, 4, -7, 5, -6, 2, 7]


def foo(arr):
    res = arr[0]  # 保存最大的累计和
    arr_sum = 0  # 保存累计和
    for num in arr:
        if arr_sum > 0:
            arr_sum += num  # 累计和为非负,有继续累加的意义
        else:
            arr_sum = num  # 累加和为负无意义重新累计
        res = max(res, arr_sum)  # 最大的累计和

    return res


if __name__ == '__main__':
    print(foo(a))

  

posted @ 2019-06-21 17:12  公众号python学习开发  阅读(266)  评论(0编辑  收藏  举报