给定一个整数数组,找出一个连续子数组(至少包含一个数字),它的各位数字相加的和最大。
res+nums[i] < nums[i],则res=nums[i];
res+nums[i] >= nums[i],则res=res+nums[i];
保证 res+nums[i] 不小于 nums[i],且用max记录出现过的最大res。
class Solution:
def maxSubArray(self, nums):
"""
:type nums: List[int]
:rtype: int
"""
if not nums:
return None
elif len(nums) == 1:
return nums[0]
res = nums[0]
max = res
i = 1
while i < len(nums):
if res+nums[i] < nums[i]:
res = nums[i]
elif res+nums[i] >= nums[i]:
res += nums[i]
if max < res:
max = res
i += 1
return max