import java.util.List;
class Solution {
public int minimumTotal(List<List<Integer>> triangle) {
int n = triangle.size();
for (int i = 1; i < n; i++) {
List<Integer> layerPre = triangle.get(i - 1);
List<Integer> layerNow = triangle.get(i);
int nowSize = layerNow.size();
layerNow.set(0, layerNow.get(0) + layerPre.get(0));
layerNow.set(nowSize - 1, layerNow.get(nowSize - 1) + layerPre.get(nowSize - 2));
for (int j = 1; j < nowSize - 1; j++) {
layerNow.set(
j,
layerNow.get(j) + Math.min(layerPre.get(j), layerPre.get(j - 1))
);
}
}
int min = Integer.MAX_VALUE;
for (int val : triangle.get(n - 1)) {
if (val < min) {
min = val;
}
}
return min;
}
}