思路:动态规划。在原始数组上进行操作。逐步累加计算到达每一层每个位置的最小路径和。最后一层中的最小值即为所求值。
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][0]+=triangle[i-1][0];
else if(j+1==triangle[i].size())
triangle[i][j]+=triangle[i-1][j-1];
else
triangle[i][j]+=min(triangle[i-1][j-1],triangle[i-1][j]);
}
vector<int> ans(triangle.back());
sort(ans.begin(),ans.end());
return ans[0];
}
};