题目描述
自己写的代码,肥肠复杂,nsum是负数的和,psum是正数的和
class Solution:
def maxSubArray(self, nums: List[int]) -> int:
nsum = 0
psum = 0
count = 0
value = []
for i in range(len(nums)):
if nums[i] < 0:
nsum = nsum + nums[i]
if nums[i] >= 0:
count = count + 1
if psum + nsum >= 0:
psum = psum + nsum + nums[i]
nsum = 0
else:
nsum = 0
psum = nums[i]
value.append(psum)
if count == 0:
return max(nums)
else:
return max(value)
大神写的代码,如同看穿了本质一样
cur_sum是包含第i个元素的最大的和
max_sum是目前为止最大的和
class Solution:
def maxSubArray(self, nums: List[int]) -> int:
if not nums:
return
cur_sum = max_sum = nums[0]
for i in nums[1:]:
cur_sum = max(cur_sum+i, i)
max_sum = max(cur_sum, max_sum)
return max_sum