简单动态规划。
public class Solution {
public int minimumTotal(ArrayList<ArrayList<Integer>> triangle) {
int len = triangle.size();
if (len == 0) return 0;
int[] sum = new int[len];
sum[0] = triangle.get(0).get(0);
for (int i = 1; i < len; i++) {
ArrayList<Integer> arr = triangle.get(i);
int tmp = sum[0];
for (int j = 0; j < i+1; j++) {
int min = arr.get(j) + tmp;
if (j + 1 < i) { tmp = Math.min(sum[j], sum[j+1]); }
else { tmp = sum[j]; }
sum[j] = min;
}
}
int min = sum[0];
for (int i = 0; i < len; i++) {
if (sum[i] < min) min = sum[i];
}
return min;
}
}