53.最大子序和

給定一個整數(shù)數(shù)組 nums ,找到一個具有最大和的連續(xù)子數(shù)組(子數(shù)組最少包含一個元素),返回其最大和。(連續(xù)子數(shù)組的最大和)
思路:動態(tài)規(guī)劃

思路:動態(tài)規(guī)劃

狀態(tài)方程:
max( dp[ i ] ) = getMax( max( dp[ i -1 ] ) + arr[ i ] ,arr[ i ] )

上面式子的意義是:我們從頭開始遍歷數(shù)組,遍歷到數(shù)組元素 arr[ i ] 時,連續(xù)的最大的和 可能為 max( dp[ i -1 ] ) + arr[ i ] ,也可能為 arr[ i ] ,做比較即可得出哪個更大,取最大值。時間復(fù)雜度為 n

代碼:

class Solution:
    def maxSubArray(self, nums):
        if nums is None:
            return 0
        sum=0
        Max=nums[0]
        for i in range(len(nums)):
            sum=max(sum+nums[i],nums[i])
            if sum>Max:
                Max=sum
        return Max
sol=Solution()
print(sol.maxSubArray([-2,1,-3,4,-1,2,1,-5,4]))
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容