120. 三角形最小路径和

122 阅读1分钟

120. 三角形最小路径和

  • 尝试把大问题拆分为子问题,它们的区别在于问题的规模

  • 规模在这里是:层高

  • base case 是当矩阵行高只有 1 时,它的最优路径是显而易见的。 image.png

  • 有了一层高的「最优路径」,我们推出两层高的「最优路径」

  • 有了两层高的「最优路径」,我们推出三层高的「最优路径」

  • triangle.length-1层高的「最优路径」推出 triangle.length 层高的「最优路径」

var minimumTotal = function (arr) {
  var n = arr.length;
  var dp = new Array(n).fill(0).map((v, i) => new Array(arr[i].length));
  for (var i = n - 1; i >= 0; i--) {
    for (var j = 0; j < arr[i].length; j++) {
      if (i == n - 1) {
        dp[i][j] = arr[i][j];
      } else {
        var value = Math.min(dp[i + 1][j], dp[i + 1][j + 1]);
        dp[i][j] = value + arr[i][j];
      }
    }
  }
  return dp[0][0];
};