package com.interview.dynamic; import java.util.List; /** * Given a triangle, find the minimum path sum from top to bottom. Each step you may move to adjacent numbers on * the row below. * https://leetcode.com/problems/triangle/ */ public class MinimumTriangleSum { public int minimumTotal(List<List<Integer>> triangle) { int n = triangle.size(); int[] dp = new int[n]; for (int i = 0; i < triangle.get(n - 1).size(); i++) { dp[i] = triangle.get(n - 1).get(i); } for (int i = triangle.size() - 2; i >= 0; i--) { for (int j = 0; j < triangle.get(i).size(); j++) { dp[j] = triangle.get(i).get(j) + Math.min(dp[j], dp[j + 1]); } } return dp[0]; } }