LeetCode312 戳氣球(難)

2021-10-22 18:26:47 字數 975 閱讀 6739

看了大概7、8分鐘,沒有思路。自己暴力的想法是n的階乘級別,**也難寫。直接看題解,很巧妙,很驚嘆。

參考講解:經典動態規劃:戳氣球

直接上**:

class

solution

//dp[i][j]表示搓破(i,j)之間的氣球獲得的最大硬幣數量

//邊界條件:dp[i][i] = 0,它們之間沒有氣球,dp[i][i= +1]=0;它們之間也沒有氣球

int[

]dp =

newint

[new_nums.length]

[new_nums.length]

;//遞推方程:找到可能最後搓破的k氣球,使得得到的dp[i][j]為最大值

//dp[i][j] = dp[i][k] + dp[k][j]+ point[i]*point[k]*point[j]

//因為搓破了最後乙個氣球k則其相鄰的氣球為i和j。

//戳破k之前必須先戳破dp[i][k]和dp[k][j]

//確認遍歷i和j的順序,通過最終結果的位置和base case的位置以及要計算的遞推方程確定。

//斜著遍歷,或者i從大到小,j從小到大,

for(

int i=nums.length;i>=

0;i--)}

}return dp[0]

[nums.length+1];}}

時間複雜度應該為o(n3)

感悟:區間dp就是縮小搜尋範圍的乙個過程。

模板總結參考:solution/yi-wen-tuan-mie-qu-jian-dp-by-bnrzzvnepe-2k7b/

leetcode 312 戳氣球(動態規劃)

有 n 個氣球,編號為0 到 n 1,每個氣球上都標有乙個數字,這些數字存在陣列nums中。現在要求你戳破所有的氣球。每當你戳破乙個氣球i時,你可以獲得nums left nums i nums right 個硬幣。這裡的left和right代表和i相鄰的兩個氣球的序號。注意當你戳破了氣球 i 後,...

leetcode 312 戳氣球(區間dp)

312.戳氣球 難度困難297 有n個氣球,編號為0到n 1,每個氣球上都標有乙個數字,這些數字存在陣列nums中。現在要求你戳破所有的氣球。每當你戳破乙個氣球i時,你可以獲得nums left nums i nums right 個硬幣。這裡的left和right代表和i相鄰的兩個氣球的序號。注意...

leetcode 312 戳氣球(動態規劃)

題目描述 有 n 個氣球,編號為0 到 n 1,每個氣球上都標有乙個數字,這些數字存在陣列 nums 中。現在要求你戳破所有的氣球。戳破第 i 個氣球,你可以獲得 nums i 1 nums i nums i 1 枚硬幣。這裡的 i 1 和 i 1 代表和 i 相鄰的兩個氣球的序號。如果 i 1或 ...