Triangle

MediumArrayDynamic Programming

Solution

export function minimumTotal(triangle: number[][]): number {
  const height = triangle.length;
  const dp = new Array(height).fill(undefined).map((_, i) => new Array(i + 1).fill(undefined));
  dp[0][0] = triangle[0][0];
 
  for (let h = 1; h < height; h++) {
    for (let i = 0; i < h + 1; i++) {
      dp[h][i] = triangle[h][i] + Math.min(dp[h - 1][i - 1] ?? Infinity, dp[h - 1][i] ?? Infinity);
    }
  }
 
  return Math.min(...dp[height - 1]);
}