声明:只求用最简单的方法通过,不求优化,不喜勿喷
- dp求解,每层的值变为上一层的到达这一步的值的最小值
- 如果已经再最后一层,则判定大小,找出最后一层最小的那个
- 如果只有一层,特判一下
- 优化todo
/**
* @param {number[][]} triangle
* @return {number}
*/
var minimumTotal = function (triangle) {
let min = 99999999;
if(triangle.length == 1){
return triangle[0][0];
}
for (var i = 1; i < triangle.length; i++) {
for (var j = 0; j < triangle[i].length; j++) {
if (j == 0) {
triangle[i][j] += triangle[i - 1][j]
} else if (j == triangle[i].length - 1) {
triangle[i][j] += triangle[i - 1][j - 1]
} else {
triangle[i][j] = Math.min(triangle[i - 1][j - 1] + triangle[i][j], triangle[i][j] + triangle[i - 1][j])
}
if (i == triangle.length - 1) {
if (triangle[i][j] < min) {
min = triangle[i][j];
}
}
}
}
return min;
};