class Solution {
public:
int minimumTotal(vector<vector<int>>& triangle) {
for(int i = 1; i < triangle.size(); ++i){
for(int j = 0; j < triangle[i].size(); ++j){
if(j == 0) triangle[i][j] += triangle[i-1][j];
else if(j == triangle[i].size() - 1) triangle[i][j] += triangle[i-1][j - 1];
else{
triangle[i][j] += (triangle[i-1][j] < triangle[i-1][j-1] ? triangle[i-1][j] : triangle[i-1][j-1]);
}
}
}
int ans = 0x3f3f3f;
for(int j = 0; j < triangle[triangle.size() - 1].size(); j++){
if(ans > triangle[triangle.size() - 1][j]) ans = triangle[triangle.size() - 1][j];
}
return ans;
}
};
简单题,动态规划,从上至下依次叠加即可