[LeetCode]53. Maximum Subarray
53. Maximum Subarray
动态规划
class Solution(object):
def maxSubArray(self, nums):
"""
:type nums: List[int]
:rtype: int
"""
if not nums:
return 0
dp = [0] * len(nums)
max_sum = dp[0] = nums[0]
for i in range(1, len(nums)):
dp[i] = nums[i] if dp[i-1] + nums[i] < 0 else max(dp[i-1] + nums[i], nums[i])
if max_sum < dp[i]:
max_sum = dp[i]
return max_sum
class Solution(object):
def maxSubArray(self, nums):
"""
:type nums: List[int]
:rtype: int
"""
if not nums:
return 0
max_sum = cur_sum = nums[0]
for i in range(1, len(nums)):
cur_sum = max(cur_sum + nums[i], nums[i])
max_sum = max(cur_sum, max_sum)
return max_sum
关注公众号:数据结构与算法那些事儿,每天一篇数据结构与算法

浙公网安备 33010602011771号