DP问题 + 滚动数组
public class Solution {
public int minimumTotal(List<List<Integer>> triangle) {
if (triangle == null || triangle.size() == 0) {
return -1;
}
int length = triangle.size();
int[] sum = new int[length];
for (int i = 0; i < length; i++) {
sum[i] = triangle.get(length - 1).get(i);
}
for (int i = length - 2; i >= 0; i--) {
for (int j = 0; j <= i; j++) {
sum[j] = Math.min(sum[j], sum[j + 1]) + triangle.get(i).get(j);
}
}
return sum[0];
}
}