class Solution {
public:
int minimumTotal(vector<vector<int> > &triangle) {
// Start typing your C/C++ solution below
// DO NOT write int main() function
int n = triangle.size();
if (n == 0) return 0;
vector<int> dp(n);
for (int i = 0; i < n; i++)
dp[i] = triangle[n - 1][i];
for (int i = n - 2; i >= 0; i--)
for (int j = 0; j <= i; j++)
dp[j] = triangle[i][j] + min(dp[j], dp[j + 1]);
return dp[0];
}
};
Small Case: 8ms
Large Case: 36ms
Time: O(n^2)
Space: O(n)