-----QUESTION-----
Given a triangle, find the minimum path sum from top to bottom.Each step you may move to adjacent numbers on the row below.
For example, given the following triangle
[ [2], [3,4], [6,5,7], [4,1,8,3] ]
The minimum path sum from top to bottom is 11
Note:
Bonus point if you are able to do this using only
-----SOLUTION-----
class Solution {
public:
int minimumTotal(vector<vector<int>> &triangle) {
vector<int> tmp;
vector<vector<int>> sum;
sum.push_back(triangle[0]);
int height = triangle.size();
int width;
for(int i = 1; i< height; i++)
{
width = triangle[i].size();
for (int j = 0; j< width; j++)
{
if(j==0)
{
tmp.push_back(triangle[i][j]+sum[i-1][j]);
}
else if(j==width-1)
{
tmp.push_back(triangle[i][j]+sum[i-1][j-1]);
}
else
{
tmp.push_back(min(triangle[i][j]+sum[i-1][j-1],triangle[i][j]+sum[i-1][j]));
}
}
sum.push_back(tmp);
tmp.clear();
}
int minSum = sum[height-1][0];
for(int i = 1; i<triangle[height-1].size(); i++)
{
if(sum[height-1][i] < minSum)
minSum = sum[height-1][i];
}
return minSum;
}
};