Given a triangle, find the minimum path sum from top to bottom. Each step you may move to adjacent numbers on the row below.
Have you met this question in a real interview? Yes
Example
For example, given the following triangle
[
[2],
[3,4],
[6,5,7],
[4,1,8,3]
]
The minimum path sum from top to bottom is 11 (i.e., 2 + 3 + 5 + 1 = 11).
Note
public class Solution {
public int minimumTotal(int [][] triangle){
if(triangle == null || triangle.length ==0)
return -1;
if(triangle[0]==null || triangle[0].length==0)
return -1;
int n = triangle.length;
int [][] f = new int [n][n];
for(int i =0; i<n; i++)
f[n-1][i]=triangle[n-1][i];
for(int i=n-2;i>=0;i--){
for(int j =0;j<=i;j++){
f[i][j]=Math.min(f[i+1][j],f[i+1][j+1]) +triangle[i][j];
}
}
return f[0][0];
}
}