109.Triangle
Last updated
Last updated
public int minimumTotal(int[][] triangle) {
if (triangle == null || triangle.length == 0) {
return -1;
}
if (triangle[0] == null || triangle[0].length == 0) {
return -1;
}
//state:f is the min sum from(x,y) to the bottom
int n=triangle.length;
int[][] f=new int[n][n];
//Initialization:
for(int i=0;i<n;i++){
f[n-1][i]=triangle[n-1][i];
}
//function:
for(int i=n-2;i>=0;i--){
for(int j=i;j>=0;j--){
f[i][j]=Math.min(f[i+1][j],f[i+1][j+1])+triangle[i][j];
}
}
return f[0][0];
}