描述
给定一个整数数组,找到一个具有最大和的子数组,返回其最大和。
样例
给出数组[−2,2,−3,4,−1,2,1,−5,3],符合要求的子数组为[4,−1,2,1],其最大和为6
挑战
要求时间复杂度为O(n)
注意事项
子数组最少包含一个数
分析
将子串和为负数的子串丢掉,仅保留子串为整数的情况
代码
class Solution:
"""
@param nums: A list of integers
@return: A integer indicate the sum of max subarray
"""
def maxSubArray(self, nums):
cur = 0 # 初始值
mx = -float('inf') # 最大值的初始值为﹣∞
for num in nums:
if cur < 0:
cur = num
else:
cur += num
if cur > mx:
mx = cur
return mx