程式語言 - LeetCode - C++ - 120. Triangle



參考資訊:
https://www.cnblogs.com/grandyang/p/4286274.html

題目:


方法:

原始資料: [[2], [3,4], [6,5,7], [4,1,8,3]]

i = 2
for (j = 0): 7 1 8  3
for (j = 1): 7 6 8  3
for (j = 2): 7 6 10 3

i = 1
for (j = 0): 9 6  10 3
for (j = 1): 9 10 10 3

i = 0
for (j = 0): 11 10 10 3

解答:

class Solution {
public:
    int minimumTotal(vector<vector<int>>& triangle) {
        int n = triangle.size();
        vector<int> dp = triangle.back();

        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];
    }
};