最大连续子数组的和,python实现

# 最大子数组的和
def maxsum_of_subarray(nums):
    # 如果全负
    if max(nums) < 0:
        return max(nums)
    # 如果全正
    if min(nums) > 0:
        return sum(nums)
    # 当数组元素有正有负时
    current_sum = 0
    greatest_sum = 0
    for elem in nums:
    	# 如果当前和<=0,则从此时的这个元素重新开始算
        if current_sum <= 0:
            current_sum = elem
        # 否则,在原来的和上加上这个元素
        else:
            current_sum += elem
        if current_sum > greatest_sum:
            greatest_sum = current_sum
    return greatest_sum

if __name__ == "__main__":
    nums = [2, 3, -4, 10, -8, 9]
    print (maxsum_of_subarray(nums))

你可能感兴趣的:(python,数据结构)