1、题目描述
给一个由数组组成的数组,三角形的,返回从顶到底的最短路径和。
2、思路
一层层更新。更新每一层走到每个位置的最小值。
返回最后一行的最小值。
3、代码
int minimumTotal(vector<vector<int>>& triangle) {
int n = triangle.size();
if(n==0) return 0;
for(int i=1;i<n;i++){
for(int j=0;j<=i;j++){
if(j==0)
triangle[i][j]+=triangle[i-1][j];
else if(j==i)
triangle[i][j]+=triangle[i-1][j-1];
else
triangle[i][j]+=min(triangle[i-1][j],triangle[i-1][j-1]);
}
}
int ans = triangle[n-1][0];
for(int i=0;i<n;i++){
if(triangle[n-1][i]<ans)
ans=triangle[n-1][i];
}
return ans;
}