Triangle

题目大意: 求一个三角形二维数组从顶到低端的最小路径和


解题思路:动态规划


class Solution {
public:
    int minimumTotal(vector > &triangle) {
        if(triangle.empty()) {
            return 0;
        }
        int m = triangle.size();
        int n = triangle[m - 1].size();
        vector dp(n, 0);
        for(int i = 0; i < n; i++) {
            dp[i] = triangle[m - 1][i];
        }
        for(int i = m - 2; i >= 0; i--) {
            for(int j = n - 1, k = n - m + i; j >= m - 1 - i && k >= 0; j--, k--) {
                dp[j] = min(dp[j], dp[j - 1]) + triangle[i][k];
            }
        }
        return dp[n - 1];
    }
};


你可能感兴趣的:(leetcode)