leetCode打卡——120 triangle

291 阅读1分钟

题目

Given a triangle, find the minimum path sum from top to bottom. Each step you may move to adjacent numbers on the row below.

For example, given the following triangle

[ [2], [3,4], [6,5,7], [4,1,8,3] ]

The minimum path sum from top to bottom is 11 (i.e., 2 + 3 + 5 + 1 = 11).

这个题目我搞了一些时间才明白了题意,一开始以为是在每一层找出最小的值就可以了 - -

思路:

  1. 这道题可以有爬楼梯的感觉,计算的当前层的所有数字都是根据下一层和当前层的数字得到的最小值,举例

    F3 [6]

    F4 [4, 1]

    拿第三层和第四层左侧局部金字塔举例,取F3的节点和F4的节点的最小和作为F3的节点,所以F3的第一个节点=MIN(6 + 4, 6 + 1)= 7

  2. 根据第1步,底层的处理好他下层的和,那么可以通过爬楼梯的形式得到金字塔的最小和的解。

var minimumTotal = function(triangle) {
    for (let i = triangle.length - 2; i >= 0; i--) {
        const line = triangle[i];
        for (let j = 0; j < line.length; j++) {
            line[j] = Math.min(
                triangle[i + 1][j],
                triangle[i + 1][j + 1]
            ) + line[j];
        }
    }
    return triangle[0][0];
};