三角形最小路径和(经典dp)
class Solution {
public int minimumTotal(List<List<Integer>> triangle) {
int height = triangle.size(),width=0;
int [][]dp = new int[height][];
for(int i=0;i<height;i++)
dp[i]=new int[i+1];
dp[0][0]=triangle.get(0).get(0);
for(int i=1;i<height;i++){
List<Integer> list= triangle.get(i);
width=list.size();
for(int j=0;j<width;j++){
if(j==0){
dp[i][j]=dp[i-1][j]+list.get(j);
}else if(j==width-1){
dp[i][j]=dp[i-1][j-1]+list.get(j);
}else{
dp[i][j]=Math.min(dp[i-1][j],dp[i-1][j-1])+list.get(j);
}
}
}
Arrays.sort(dp[height-1]);
return dp[height-1][0];
}
}
不一样的烟火