leetcode Triangle

来源:互联网 发布:奥尼尔vs奥拉朱旺 数据 编辑:程序博客网 时间:2024/06/13 05:07

原题链接:https://leetcode.com/problems/triangle/

Description

Given a triangle, find the minimum path sum from top to bottom. Each step you may move to adjacent numbers on the row below.

For example, given the following triangle
[
[2],
[3,4],
[6,5,7],
[4,1,8,3]
]
The minimum path sum from top to bottom is 11 (i.e., 2 + 3 + 5 + 1 = 11).

class Solution {public:    int minimumTotal(vector<vector<int>>& triangle) {        if (triangle.empty() || triangle[0].empty()) return 0;        n = triangle.size();        arr = triangle;        dp.resize(n, vector<int>(n));        return dfs(0, 0);    }private:    int n;    vector<vector<int>> dp;    vector<vector<int>> arr;    int dfs(int i, int j) {        int ret;        if (i >= n || j >= n) return 0;        if (dp[i][j]) return dp[i][j];        if (i == n - 1) ret = 0;        ret = arr[i][j] + min(dfs(i + 1, j), dfs(i + 1, j + 1));        return dp[i][j] = ret;    }};
0 0