题目描述:
Given an integer array nums, find the contiguous subarray (containing at least one number) which has the largest sum and return its sum.
例子:
Example:
Input: [-2,1,-3,4,-1,2,1,-5,4],
Output: 6
Explanation: [4,-1,2,1] has the largest sum = 6.
思路:
求最大子串数值,由于加负数越加越少,所以我们可以从头开始遍历,每当遇到负数,不去加它,直接将当前的值当成局部最大值。遇到一个正数,加上他当作局部最大值。以此类推得到一个新的list。再用max函数求出新的list最大的元素值即为结果。
有上述例子可以看到:
nums = [-2,1,-3,4,-1,2,1,-5,4]
res = [-2,1,-2,4,3,5,6,1,5]
我们只需找到res中最大的数则为结果。
代码:
class Solution:
def maxSubArray(self, nums: List[int]) -> int:
curr = nums[0]
res = [nums[0]]
for i in range(1,len(nums)):
if curr <= 0:
res.append(nums[i])
curr = nums[i]
elif curr > 0:
res.append(nums[i]+curr)
curr = nums[i]+curr
return max(res)