思路:首先尝试用自顶向下的方法求dp结果,但是从上到下每个list的长度从小到大,所以需要考虑边界值,比较麻烦,所以从下往上遍历。
public int minimumTotal(List<List<Integer>> triangle) {
int len=triangle.size();
int[] dp=new int[len];
for(int i=0;i<triangle.get(len-1).size();i++){
dp[i]=triangle.get(len-1).get(i);
}
for(int i=len-2;i>=0;i--){
for(int j=0;j<=i;j++){
dp[j]=triangle.get(i).get(j)+Math.min(dp[j],dp[j+1]);
}
}
return dp[0];
}