class Solution {
public:
int minimumTotal(vector<vector<int>>& triangle) {
vector<int> res;
res.push_back(triangle[0][0]);
for(int i=1; i<triangle.size();i++){
for(int j=i;j >=0;j--){
if(j==i){res.push_back(triangle[i][j]+res[j-1]);}
else{
if(j==0){res[j]=triangle[i][j]+res[j];}
else{
res[j]=triangle[i][j]+min(res[j],res[j-1]);
}
}
}
}
return *min_element(res.begin(),res.end());
}
};