Problem#53 Maximum Subarray

Problem

在這裏插入圖片描述

Solution

# 法一:優化前綴和
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
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章