Fork me on GitHub

Triangle

Description

https://leetcode.com/problems/triangle/description/

Solution

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
class Solution {
public:
int minimumTotal(vector<vector<int>>& triangle) {
if (triangle.size() == 0) return 0;
int index = 1;
while (index < triangle.size()) {
triangle[index][0] += triangle[index - 1][0];
for (int i = 1; i < triangle[index].size() - 1; i++) {
triangle[index][i] += min(triangle[index - 1][i - 1], triangle[index - 1][i]);
}
triangle[index][triangle[index].size() - 1] += triangle[index - 1][triangle[index - 1].size() - 1];
index += 1;
}

int ret = INT_MAX;
for (int i = 0; i < triangle[triangle.size() - 1].size(); i++)
if (triangle[triangle.size() - 1][i] < ret)
ret = triangle[triangle.size() - 1][i];

return ret;
}
};