Skip to content

Commit 3d2e915

Browse files
ädded Dynamic programming solution to minimum path sum
1 parent 13b5dbd commit 3d2e915

File tree

1 file changed

+52
-15
lines changed

1 file changed

+52
-15
lines changed

64 Minimum Path Sum.js

Lines changed: 52 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -6,29 +6,29 @@
66
// if(grid === null || grid.length === 0 || grid[0].length === 0){
77
// return 0;
88
// }
9-
9+
1010
// var dp = [[]];
11-
11+
1212
// dp[0][0] = grid[0][0];
13-
13+
1414
// for(var i = 1; i < grid.length; i++){
1515
// dp.push([]);
1616
// dp[i][0] = grid[i][0] + dp[i - 1][0];
1717
// }
18-
18+
1919
// for(var j = 1; j < grid[0].length; j++){
2020
// dp[0][j] = grid[0][j] + dp[0][j - 1];
2121
// }
22-
22+
2323
// for(i = 1; i < grid.length; i++){
2424
// for(j = 1; j < grid[i].length; j++){
2525
// var val1 = dp[i - 1][j];
2626
// var val2 = dp[i][j - 1];
27-
27+
2828
// dp[i][j] = Math.min(val1, val2) + grid[i][j];
2929
// }
3030
// }
31-
31+
3232
// return dp[dp.length - 1][dp[0].length - 1];
3333
// }
3434

@@ -42,32 +42,69 @@
4242
var minimumTotal = function(triangle) {
4343
var preResult = [];
4444
var rows = triangle.length;
45-
45+
4646
if(rows > 0) {
4747
preResult.push(triangle[0][0]);
4848
} else {
4949
return null;
5050
}
51-
51+
5252
for(var row = 1; row < rows; row++) {
5353
var curResult = [];
54-
54+
5555
for(var col = 0; col < triangle[row].length; col++) {
5656
var val;
57-
57+
5858
if(col === 0) {
5959
val = preResult[col];
6060
} else if(col === (triangle[row].length - 1)) {
6161
val = preResult[col-1];
6262
} else {
6363
val = Math.min(preResult[col-1], preResult[col]);
6464
}
65-
65+
6666
curResult[col] = triangle[row][col] + val;
6767
}
68-
68+
6969
preResult = curResult;
7070
}
71-
71+
7272
return Math.min.apply(null, preResult);
73-
};
73+
};
74+
75+
76+
//DP Solution
77+
var minPathSum = function(grid) {
78+
if(grid.length === 0) {
79+
return 0;
80+
}
81+
var m = grid.length;
82+
var n = grid[0].length;
83+
var paths = [];
84+
85+
// Initialize paths with 0
86+
for(var i = 0; i < m; i++) {
87+
var rowtemp = [];
88+
for(var j = 0; j < n; j++) {
89+
rowtemp.push(0);
90+
}
91+
paths.push(rowtemp);
92+
}
93+
94+
//Initialize first row
95+
paths[0][0] = grid[0][0];
96+
for(var c = 1; c < n; c++) {
97+
paths[0][c] = paths[0][c-1] + grid[0][c];
98+
}
99+
//Initialize first column
100+
for(var r = 1; r < m; r++) {
101+
paths[r][0] = paths[r - 1][0] + grid[r][0];
102+
}
103+
for(var row = 1; row < m; row++) {
104+
for(var column = 1; column < n; column++){
105+
var previous = Math.min(paths[row][column - 1], paths[row - 1][column]);
106+
paths[row][column] = previous + grid[row][column];
107+
}
108+
}
109+
return paths[m-1][n-1];
110+
};

0 commit comments

Comments
 (0)