64 最小路徑和
思路:
dp 陣列為二維陣列,長度取決於提供陣列
陣列需初始化橫起始軸的值和豎起始軸的值,中間的值取決於上,左的值。
關鍵在於了解本值與上,左值的關係
**
class
solution
int m = grid.length;
int n = grid[0]
.length;
int[
] dp =
newint
[m][n]
; dp[0]
[0]= grid[0]
[0];
for(
int i=
1;i)for
(int i=
1;i)for
(int i=
1;ireturn dp[m-1]
[n-1];
}}
300 最長上公升子串行
思路:
dp 陣列的長度為提供的資料陣列長度
關鍵在於思考 本點和之前所有點之間的關係,從左到右思考
**:
class
solution
int[
] dp=
newint
[nums.length]
;int res=1;
dp[0]
=1;for
(int i=
1;i(dp[i]
>res)
res=dp[i];}
}return res;
}}
322 零錢兌換
思路:
dp 陣列長度不再取決於體用元素陣列長度,而是金額(其他相關引數)。
不同的金額生成不同的情況。
**:
class
solution
}return dp[amount]
==999999?-
1:dp[amount];}
}
120 三角形最小路徑和
思路:
dp 陣列的長度取決於元素陣列最長的部分。
不是二維,而是通過更新不斷變短。
思考不是從頭,而是從尾到頭。
**:
class
solution
}return dp[0]
;}}
174 地下城遊戲
思路:
dp 陣列仍取決於元素陣列
但考慮也是從尾到頭,反向思考
**:
class
solution
for(
int j=ylen-
2;j>=
0;j--
)for
(int i=xlen-
2;i>=
0;i--)}
return dp[0]
[0];
}}
5 最長回文子串
思路:
dp 陣列長度取決與元素長度。
以點為中心,向左右遍歷
**:
class
solution
int len = s.
length()
;boolean
dp =
newboolean
[len]
[len]
;int begin =
0, end =
0, max =1;
for(
int i = len -
1; i >=
0; i--)}
}}}return s.
substring
(begin, end+1)
;}}
72 編輯距離
思路:
dp 陣列長度取決於兩個字串。初始軸意味者生成這樣的字串需要多少次操作
中間的陣列意味者從橫到豎需要多少次操作。
從上,左,上左三種情況選最短的情況。
**:
class
solution
//沒有word2,只有word1的情況
for(
int i =
0; i <= len1; i++
)for
(int i =
1; i <= len1; i ++
)else
distance[i]
[j]= math.
min(math.
min(temp1, temp2)
, te***);}
}return distance[len1]
[len2];}
}
leetcode刷題總結 動態規劃
152乘積最大的連續子串行 圈複雜度很高,不要遺漏分支 vectormx len,0 vectormn len,0 213打家劫舍 ii 如果兩間相鄰的房屋在同一晚上被小偷闖入,系統會自動報警。vectors len,0 vectorn len,0 983最低票價 初始值特別要小心!我們定義 dp ...
leetcode刷題 動態規劃
動態規劃 英語 dynamic programming,簡稱 dp 是一種在數學 管理科學 電腦科學 經濟學和生物資訊學中使用的,通過把原問題分解為相對簡單的子問題的方式求解複雜問題的方法。動態規劃常常適用於有重疊子問題和最優子結構性質的問題,動態規劃方法所耗時間往往遠少於樸素解法。動態規劃背後的基...
動態規劃刷題總結
資料結構與演算法 41 動態規劃理論 最優子結構 無後效性和重複子問題 zj csdn部落格 乙個模型 多階段決策最優解模型,重點在於多階段,每個階段都對應著不同的狀態 三個特徵 最優子結構,無後效性,重複子問題。主要抓住最優子結構這一特徵,理解為後面的階段狀態可以由前面的階段狀態推導而來。狀態定義...