如何求数组连续最大和

"""
一个有n个元素的数组,这n个元素即可以是正数也可以是负数,数组中连续的一个或多个元素可以组成一个连续的子数组,一个数组可能有多个这种连续子数组,求子数组和的最大值。
例如,对于数组[1,-2,4,8,-4,7,-1,-5]而言,其最大和的子数组为[4,8,-4,7],最大值为15.
"""


def maxSubArray1(arr):
    if arr == None or len(arr) < 1:
        print('参数不合法')
        return 0

    maxSum = -2 ** 32
    for i in range(len(arr)):
        sum = 0
        for j in range(i, len(arr)):
            sum += arr[j]
            if sum > maxSum:
                maxSum = sum
    return maxSum


if __name__ == '__main__':
    arr = [1, -2, 4, 8, -4, 7, -1, -5]
    print('连续最大和为:' + str(maxSubArray1(arr)))

你可能感兴趣的:(python数据结构和算法)