三角矩陣

問題描述
給定一個三角矩陣, 計算從三角矩陣頂部到底部的最小路徑和, 每一步都可以移動到下面一行相鄰的數字
比如, 給定下面的三角矩陣
[2]
[3] [4]
[6] [5] [7]
[4] [1] [8] [3]
最小的從頂部到底部的路徑和層爲2 + 3 + 5 + 1 = 11

思路1

class Solution {
public:
    int minimumTotal(vector<vector<int> > &triangle) {
        vector<vector<int>> v(triangle);
        int row = triangle.size();
        int minPath;
        for (int i = 1; i < row; ++i)
        {
            for (int j = 0; j <= i; ++j)
            {
                if (j == 0)
                {
                    v[i][j] += v[i - 1][j]; 
                }
                else if (j == i)
                {
                    v[i][j] += v[i - 1][j - 1];
                }
                else
                {
                    v[i][j] += min(v[i - 1][j], v[i - 1][j - 1]);
                }
                //v[i][j] += triangle[i][j];
            }
        }
        minPath = v[row - 1][0];
        for (int i = 0; i < row; ++i)
        {
            minPath = min(minPath, v[row - 1][i]);
        }
        return minPath;
    }
};

思路2

class Solution {
public:
    int minimumTotal(vector<vector<int> > &triangle) {
        vector<vector<int>> v(triangle);
        int len = triangle.size();
        for (int i = len - 2; i >=0; --i)
        {
            for (int j = 0; j <= i; ++j)
            {
                v[i][j] = min(v[i + 1][j], v[i + 1][j + 1]) + v[i][j];
            }
        }
        return v[0][0];
    }
};
發佈了239 篇原創文章 · 獲贊 31 · 訪問量 2萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章