120.[leetcode]C++实现三角形最小路径和(Triangle)

(一)题目描述

 

(二)思想方法

https://blog.csdn.net/qq874455953/article/details/82806030

(三)代码实现

class Solution {
public:
    int minimumTotal(vector<vector<int>>& triangle) 
    { vector<vector<int>> minPath = triangle;
        int n = triangle.size();
        
        for (int i = 1; i < n; i++) {
            for (int j = 0; j <= i; j++) {
               //当计算节点是头结点或者尾节点时,走到此节点的路径只有一个
                if (j == 0) {
                    minPath[i][j] = minPath[i - 1][j] + triangle[i][j];
                } else if (j == i) {
                    minPath[i][j] = minPath[i - 1][j - 1] + triangle[i][j];
                } else {
                	//当非头尾节点的时候, 走到节点的方式有两种
                     minPath[i][j] = min(minPath[i-1][j-1] + triangle[i][j], minPath[i-1][j] + triangle[i][j]);
                }
            }
        }
        //返回最后一层节点的最小路径的最小值 即目标值
        return *min_element(minPath[n-1].begin(), minPath[n-1].end());

    }
};

猜你喜欢

转载自blog.csdn.net/guaiguaitinghua/article/details/92363219