给定一个三角形 triangle ,找出自顶向下的最小路径和。

每一步只能移动到下一行中相邻的结点上。相邻的结点 在这里指的是 下标 与 上一层结点下标 相同或者等于 上一层结点下标 + 1 的两个结点。也就是说,如果正位于当前行的下标 i ,那么下一步可以移动到下一行的下标 i 或 i + 1 。

思路

  1. 自底向上选择较小值累加
1
2
3
4
5
6
7
8
9
10
var minimumTotal = function (triangle) {
for (let i = triangle.length - 1; i > 0; --i) {
const curItems = triangle[i]
const upItems = triangle[i - 1]
for (let j = 0; j < upItems.length; ++j) {
upItems[j] += Math.min(curItems[j], curItems[j + 1])
}
}
return triangle[0][0]
}