这题我是用的动态规划做的。简单点就是当前数字,当前最大值,当前最大值开始的过程中到当前值的中间差值为正的时候+当前值这3者的比较。代码如下:
class Solution(object):
def maxSubArray(self, nums):
"""
:type nums: List[int]
:rtype: int
"""
if nums == []:
return 0
sumofall = nums[0]
sumofpart = nums[0]
for i in range(1, len(nums)):
sumofall = max(sumofall, sumofpart + nums[i], nums[i])
if sumofall == nums[i]:
sumofpart = nums[i]
else:
sumofpart += nums[i]
if sumofpart < 0:
sumofpart = 0
return sumofall