leetcode120.三角形最小路径
class Solution {
public int minimumTotal(List<List<Integer>> triangle) {
int[][] dp = new int[triangle.size()][triangle.size()];
//dp初始化
dp[0][0] = triangle.get(0).get(0);
for (int i = 1; i < dp.length; i++) {
dp[i][0] = dp[i - 1][0] + triangle.get(i).get(0);
dp[i][i] = dp[i - 1][i - 1] + triangle.get(i).get(i);
}
//动态规划
for (int i = 2; i < triangle.size(); i++) {
for (int j = 1; j < i; j++) {
dp[i][j] = triangle.get(i).get(j) + Math.min(dp[i - 1][j], dp[i - 1][j - 1]);
}
}
//选取结果中的最小值
return Arrays.stream(dp[triangle.size() - 1]).min().getAsInt();
}
}