給定乙個包含非負整數的 m x n 網格,請找出一條從左上角到右下角的路徑,使得路徑上的數字總和為最小。
說明:每次只能向下或者向右移動一步。
示例:輸入:
[[1
,3,1
],[1
,5,1
],[4
,2,1
]]
輸出: 7
解釋: 因為路徑 1→3→1→1→1 的總和最小。
解題思路
**
class
solution
int[
] min =
newint
[row]
[col]
; min[0]
[0]=grid[0]
[0];
for(
int i=
1;i)for
(int j=
1;j)for
(int i=
1;ireturn min[row-1]
[col-1];}}
結果時間複雜度分析陣列每乙個元素遍歷一次,故時間複雜度為o(m*n)給定乙個整數 n,求以 1 … n 為節點組成的二叉搜尋樹有多少種?
示例:輸入: 3
輸出: 5
解釋:給定 n = 3, 一共有 5 種不同結構的二叉搜尋樹:
133
21\ /
// \ \
321132/
/ \ \
2123
解題思路**class
solution
int[
] num =
newint
[n+1];
num[0]
= num[1]
=1;for
(int i=
2;i<=n;i++)}
return num[n];}
}
結果時間複雜度分析雙重迴圈,時間複雜度為o(n^2)給兩個整數陣列 a 和 b ,返回兩個陣列中公共的、長度最長的子陣列的長度。
示例:輸入:
a: [1,2,3,2,1]
b: [3,2,1,4,7]
輸出:3
解釋:長度最長的公共子陣列是 [3, 2, 1] 。
1 <= len(a), len(b) <= 1000
0 <= a[i], b[i] < 100
解題思路**class
solution
else
if(findmax
[j])}}
}return findmax;
}}
結果時間複雜度分析雙重迴圈,時間複雜度為o(m*n)演算法 動態規劃(一)
要點是 記得return 函式,不然會棧溢位 有乙個x y的網格,小團要在此網格上從左上角到右下角,只能走格點且只能向右或向下走。請設計乙個演算法,計算小團有多少種走法。給定兩個正整數int x,int y,請返回小團的走法數目。這是動態規劃問題,也可以說是分類問題,因為只有向右,向下兩種可能 va...
動態規劃 一
在現實生活中,有一類活動的過程,由於它的特殊性,可將過程分程若干個互相聯絡的階段,在它的每一階段都需要作出決策,從而使整個過程達到最好的活動效果。當然,各個階段決策的選取不是任意確定的,它依賴於當前面臨的狀態,又印象以後的發展,當各個階段決策確定後,就組成乙個決策序列,因而也就確定了整個過程的一條活...
動態規劃(一)
動態規劃的兩種常用形式 1 遞迴型 在函式中呼叫自身 優點 直觀,容易編寫 缺點 可能會因為遞迴層數太深導致爆棧,函式呼叫帶來額外時間開銷。無法使用滾動陣列節省空間。總體來說,比遞推型慢。2 遞推型 for迴圈 效率高,有可能使用滾動陣列節省空間。有的問題只能用遞迴解決,有的問題既可以用遞迴,也可以...