Leetcode--python--Swordはオファー42を指します

連続するサブアレイの最大合計

整数配列を入力します。配列内の1つ以上の連続する整数がサブ配列を形成します。すべてのサブ配列の合計の最大値を見つけます。

時間計算量が必要ですO(n)
この質問は、動的計画法を解くための最適な解決策です。このタイプを実行するのは初めて動的計画法です。コードは非常に単純に見えますが、常に考えるのが少し難しいと感じました。参照

class Solution:
    def maxSubArray(self, nums: List[int]) -> int:
        for i in range(1, len(nums)):
            nums[i] += max(nums[i-1], 0)#nums[i]用来存储dp[i]值;如果dp[i-1]小于0,那么dp[i]==nums[i],否则dp[i]=dp[i-1]+nums[i];
        return(max(nums))

おすすめ

転載: blog.csdn.net/AWhiteDongDong/article/details/114188561