1. 程式人生 > 其它 >python力扣刷題記錄——面試題 16.17. 連續數列(待補充)

python力扣刷題記錄——面試題 16.17. 連續數列(待補充)

技術標籤:資料結構與演算法leetcode演算法

題目:

給定一個整數陣列,找出總和最大的連續數列,並返回總和。
在這裡插入圖片描述

方法一:
執行用時: 32 ms
記憶體消耗: 15.5 MB
野生做法,遍歷陣列,求和,一邊求和一邊與這個數對比,如果這個數大於求的和,就從這個數往下計算,拋棄之前算的和。有點像動態規劃的揹包問題。

class Solution:
    def maxSubArray(self, nums: List[int]) -> int:
        sum = 0
        sum_list = []
        for i in range(len(nums)
): sum += nums[i] if nums[i] > sum: sum = nums[i] sum_list.append(sum) return max(sum_list)

方法二:
暴力法。當然,時間超出了限制

class Solution:
    def maxSubArray(self, nums: List[int]) -> int:
        result = nums[0]
        for i in range(len(nums)
): sum = 0 j = i for j in range(j, len(nums)): sum += nums[j] result = sum if sum > result else result return result

待補充:

方法三:
動態規劃法:

方法四:
分治法: