public class MinPathInTriangle {
public int minimumTotal(ArrayList> tri) {
int n = tri.size();
int[][] dp = new int[n+1][n+1];
for(int i = n -1; i >= 0; i--){
for(int j = 0; j < tri.get(i).size(); j++){
dp[i][j] = Math.min(dp[i+1][j], dp[i+1][j +1]) + tri.get(i).get(j);
}
}
return dp[0][0];
}
}