碰到三角形的动态规划要从下往上来,只用上一层的信息,可以将二维数据降维反复用。
注:动态规划抠好边界,dp数组和原数组
class Solution {
public:
int minimumTotal(vector<vector<int>>& triangle) {
int n=triangle.size();
vector<int> dp(n+1,0);
for(int i=n-1;i>=0;i--) {
for(int j=0;j<i+1;j++) {
dp[j]=min(dp[j],dp[j+1])+triangle[i][j];
}
}
return dp[0];
}
};