原题链接:50. Pow(x, n) - 力扣(LeetCode)
解决思路:
与矩阵的最小路径和相差不大,不过这次不是只能向下和向右,而是对于第一列来说只能来源于上一行列索引相同的元素,对于最后一个只能来源于上一行列索引-1的元素,而中间的则选择其中最小的即可。
完整代码:
class Solution {
public int minimumTotal(List<List<Integer>> triangle) {
int[] dp = new int[triangle.size()];
for (List<Integer> list : triangle) {
for (int i = list.size() - 1; i >= 0; i--) {
if(i == 0){
dp[i] += list.get(i);
}else if (i == list.size() - 1){
dp[i] = dp[i-1] + list.get(i);
}else {
dp[i] = Math.min(dp[i],dp[i-1]) + list.get(i);
}
}
}
int min = Integer.MAX_VALUE;
for(int num : dp){
min = Math.min(num,min);
}
return min;
}
}