We can start out with a negative number, so this should work.
class Solution:
def maxSubArray(self, nums: List[int]) -> int:
max_so_far = nums[0]
curr = 0
for num in nums:
if curr < 0:
curr = 0
curr += num
max_so_far = max(max_so_far, curr)
return max_so_far