forked from dark-knight009/Programming-Helpers
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathMinimum_Path_in_Triangle.java
More file actions
50 lines (48 loc) · 1.85 KB
/
Copy pathMinimum_Path_in_Triangle.java
File metadata and controls
50 lines (48 loc) · 1.85 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
class Solution {
public int minimumTotal(List<List<Integer>> triangle) {
return findMinPath(triangle,0,0);
}
public int findMinPath(List<List<Integer>> list,int index,int lindex){
if(index>=list.size())
return 0;
int min=Integer.MAX_VALUE-10000;
int val=Math.min(findMinPath(list,index+1,lindex),findMinPath(list,index+1,lindex+1));
min=Math.min(min,val+list.get(index).get(lindex));
return min;
}
}
Method 2:Recursive Dynamic Programming (Using cache/Memoization) (Top Down Approach)
class Solution {
int [][]cache;
public int minimumTotal(List<List<Integer>> triangle) {
cache=new int[triangle.size()][triangle.size()];
for(int i=0;i<cache.length;i++){
Arrays.fill(cache[i],Integer.MAX_VALUE);
}
return findMinPath(triangle,0,0);
}
public int findMinPath(List<List<Integer>> list,int index,int lindex){
if(index>=list.size())
return 0;
if(cache[index][lindex]!=Integer.MAX_VALUE)
return cache[index][lindex];
int min=Integer.MAX_VALUE-10000;
int val=Math.min(findMinPath(list,index+1,lindex),findMinPath(list,index+1,lindex+1));
min=Math.min(min,val+list.get(index).get(lindex));
cache[index][lindex]=min;gvvf
return min;
}
}
Method 3: Dynamic Programming (Bottom up Iterative) Without using Extra Space
class Solution{
public int minimumTotal(List<List<Integer>> triangle){
for(int i=triangle.size()-2;i>=0;i--){
int val=triangle.get(i).size();
for(int j=0;j<val;j++){
int val1=triangle.get(i).get(j)+Math.min(triangle.get(i+1).get(j),triangle.get(i+1).get(j+1));
triangle.get(i).set(j,val1);
}
}
return triangle.get(0).get(0);
}
}