Given an integer array nums, find the contiguous subarray (containing at least one number) which has the largest sum and return its sum.
A subarray is a contiguous part of an array.
Example 1:
Input: nums = [-2,1,-3,4,-1,2,1,-5,4]
Output: 6
Explanation: [4,-1,2,1] has the largest sum = 6.
Example 2:
Input: nums = [1]
Output: 1
Example 3:
Input: nums = [5,4,-1,7,8]
Output: 23
Since we must take at least one number, take the first number, and record it as our start.
For every number afterwards, we have two choices:
We either can take the current number if the running sum before it is as least as big (otherwise, we would do better to just start here).
Finally, we tally the total maximum, which we return.
class Solution:
def maxSubArray(self, nums: List[int]) -> int:
= nums[0], nums[0]
curr, total_max
for num in nums[1:]:
+= num
curr = max(curr, num)
curr = max(total_max, curr)
total_max
return total_max