# 法一:優化前綴和
class Solution:
def maxSubArray(self, nums: List[int]) -> int:
n = len(nums)
max_sum = nums[0]
min_sum = sum = 0
sum = 0
for i in range(n):
sum += nums[i]
max_sum = max(max_sum, sum - min_sum)
min_sum = min(min_sum, sum)
return max_sum
# 法二:動態規劃
class Solution:
def maxSubArray(self, nums: List[int]) -> int:
n = len(nums)
current_max_sum = nums[0] # 只有一個元素時,當前最大爲nums[0]
max_sum = nums[0] # 全局最大值
for i in range(1, n):
current_max_sum = max(current_max_sum + nums[i], nums[i])
max_sum = max(max_sum, current_max_sum)
return max_sum