class Solution {
public:
int minimumTotal(vector<vector<int> > &triangle) {
int n = triangle.size();
int *res = new int [n];
int *tmp = new int [n];
res[0] = triangle[0][0];
for(int i = 1;i < n;i ++){
for(int k = 0;k < i;k ++)
tmp[k] = res[k];//设置临时变量保存上一层的计算值
res[i] = triangle[i][i] + tmp[i - 1];
res[0] = triangle[i][0] +tmp[0];
for(int j = 1;j < i;j ++){
res[j] = min(tmp[j],tmp[j - 1]) + triangle[i][j];
}
}
int min = res[0];
for(int i = 1;i < n;i ++){
if(min > res[i])
min = res[i];
}
return min;
}
};
[LeetCode] Triangle
最新推荐文章于 2020-05-23 10:06:18 发布
