Skip to content

Commit bcfde1a

Browse files
committed
Triangle DP
1 parent 0e4d15f commit bcfde1a

File tree

1 file changed

+43
-0
lines changed

1 file changed

+43
-0
lines changed

Dynamic Programming/triangle.java

+43
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
/*https://leetcode.com/problems/triangle/
2+
* triangle
3+
* strivers dp series
4+
*/
5+
private class recursion {
6+
7+
public int minimumTotal(List<List<Integer>> tri) {
8+
return recur(tri, 0, 0);
9+
}
10+
11+
private static int recur(List<List<Integer>> tri, int i, int j) {
12+
if (i == tri.size() - 1) {
13+
return tri.get(i).get(j);
14+
}
15+
int ans = tri.get(i).get(j);
16+
int down = recur(tri, i + 1, j); //tri.get(i+1).get(j);
17+
int diagonal = recur(tri, i + 1, j + 1); //tri.get(i+1).get(j+1);
18+
return ans + Math.min(down, diagonal);
19+
}
20+
}
21+
22+
private class memoization {
23+
int dp[][];
24+
25+
public int minimumTotal(List<List<Integer>> tri) {
26+
dp = new int[tri.size()][tri.size()];
27+
for (int a[] : dp) {
28+
Arrays.fill(a, -1);
29+
}
30+
return recur(tri, 0, 0);
31+
}
32+
33+
private int recur(List<List<Integer>> tri, int i, int j) {
34+
if (i == tri.size() - 1) {
35+
return tri.get(i).get(j);
36+
}
37+
if (dp[i][j] != -1) return dp[i][j];
38+
int ans = tri.get(i).get(j);
39+
int down = recur(tri, i + 1, j); //tri.get(i+1).get(j);
40+
int diagonal = recur(tri, i + 1, j + 1); //tri.get(i+1).get(j+1);
41+
return dp[i][j] = ans + Math.min(down, diagonal);
42+
}
43+
}

0 commit comments

Comments
 (0)