力扣日記 53 最大子序和 動態規劃

2021-10-02 15:15:26 字數 1933 閱讀 4859

給定乙個整數陣列 nums ,找到乙個具有最大和的連續子陣列(子陣列最少包含乙個元素),返回其最大和。

示例:輸入: [-2,1,-3,4,-1,2,1,-5,4],

輸出: 6

解釋: 連續子陣列 [4,-1,2,1] 的和最大,為 6。

動態規劃(kadane 演算法)

常數空間,沿陣列移動並在原陣列修改。

線性空間,首先沿 left->right 方向移動,然後再沿 right->left 方向移動。 合併結果。

我們在這裡使用第一種方法,因為可以修改陣列跟蹤當前位置的最大和。

下一步是在知道當前位置的最大和後更新全域性最大和。

2020/05/03 打卡

class

solution

(object):

defmaxsubarray

(self, nums)

:"""

:type nums: list[int]

:rtype: int

"""dp=

[float

('-inf')]

*(len(nums)+1

)for i,j in

enumerate

(nums)

: dp[i+1]

=max

(j,j+dp[i]

)return

max(dp)

執行用時 :28 ms, 在所有 python 提交中擊敗了78.00%的使用者

記憶體消耗 :13.2 mb, 在所有 python 提交中擊敗了5.00%的使用者

max=

float

('-inf'

) dp=

[float

('-inf')]

*(len(nums)+1

)for i,j in

enumerate

(nums)

: dp[i+1]

=max

(j,j+dp[i]

) max=

max(max,dp[i+1]

)return max

class

solution

:def

maxsubarray

(self, nums: list[

int])-

>

int:

tp=res=

float

('-inf'

)for i in nums:

tp=max(i,tp+i)

res=

max(tp,res)

return res

力扣 53最大子序和 動態規劃

題目描述 給定乙個整數陣列 nums 找到乙個具有最大和的連續子陣列 子陣列最少包含乙個元素 返回其最大和。示例 輸入 2,1,3,4,1,2,1,5,4 輸出 6 解釋 連續子陣列 4,1,2,1 的和最大,為 6。解題思路 動態規劃 使用乙個大小為len nums 的一維動態陣列,每個元素表示以...

力扣 53 最大子序和

題目描述 簡單 給定乙個整數陣列nums,找到乙個具有最大和的連續子陣列 子陣列最少包含乙個元素 返回其最大和。題目鏈結 示例 1 輸入 2,1,3,4,1,2,1,5,4 輸出 6解釋 連續子陣列 4,1,2,1 的和最大,為 6。演算法分析 設dp i 表示以第i個數結尾的子陣列的最大和,那麼只...

力扣53 最大子序和

給定乙個整數陣列 nums 找到乙個具有最大和的連續子陣列 子陣列最少包含乙個元素 返回其最大和。示例 輸入 2,1,3,4,1,2,1,5,4 輸出 6 解釋 連續子陣列 4,1,2,1 的和最大,為 6。法一 利用二級指標申請乙個二維陣列 a int malloc sizeof int m fo...