給定乙個整數陣列 nums ,找到乙個具有最大和的連續子陣列(子陣列最少包含乙個元素),返回其最大和。
輸入: [-2,1,-3,4,-1,2,1,-5,4]
輸出: 6
解釋: 連續子陣列 [4,-1,2,1] 的和最大,為 6。
class
solution
(object):
defmaxsubarray
(self, nums)
:"""
:type nums: list[int]
:rtype: int
"""length =
len(nums)
dp =[0
]*length
dp[0]
= nums[0]
for i in
range(1
,length)
:if dp[i-1]
<=0:
dp[i]
=nums[i]
else
: dp[i]
= dp[i-1]
+ nums[i]
return
max(dp)
獲取在每乙個位置上的最佳效果。如果上一效果為增益,則此次累加上一效果。如果上一效果為減益,則此次不累加上衣效果。 動態規劃學習
首先是01揹包問題,可以把它看做是乙個 行和列分別是體積從1,2,v,每個物品的花費c1,c2,cn,每個空格裡的數代表放入第i個物品在體積為j的揹包裡的最大價值。dp j 表示體積為j的揹包,放入物品後,可以得到的最大值。狀態轉移方程為if j c i dp j max dp j dp j c i...
動態規劃學習
把位置 i,j 看成乙個狀態,然後定義狀態 i,j 的指標函式d i,j 從位置 i,j 出發時能得到的最大和。int i,j 邊界值處理 for j 1 j n j result n j data n j 由下向上動態規劃,儲存葉子節點到當前節點的最大值 for i n 1 i 1 i for j...
LCT(Link Cut Tree)動態樹學習筆記
動態樹lct就是支援link,cut操作的樹形資料結構 整體思想和樹鏈剖分有些類似,每個點有一條實邊 重邊 與其兒子相連,剩下的都是虛邊 輕邊 然後用許多個splay來維護每條重鏈,記錄splay中每個點的父親節點,那麼這個splay的根節點指向的是另一條鏈 對應的是虛邊 下面是lct的幾種基本操作...