120. Triangle

来源:互联网 发布:使命召唤8mac版下载 编辑:程序博客网 时间:2024/05/29 16:20

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).


1.我的答案

class Solution {public:    int minimumTotal(vector<vector<int>>& triangle) {        int row = triangle.size();        vector<vector<int>>res;        vector<int> vec;        vec.push_back(triangle[0][0]);        res.push_back(vec);        for(int i = 1; i < row; i++){            vec.clear();            for(int j = 0; j < triangle[i].size(); j++){                int a = INT_MAX, b = INT_MAX,sum = 0;                if(j - 1 >= 0)                a = res[i-1][j-1]+triangle[i][j];                if(j <triangle[i-1].size())                b = res[i-1][j] + triangle[i][j];                sum = min(a,b);                vec.push_back(sum);            }            res.push_back(vec);        }        int minm = res[row-1][0];        for(int k = 0; k < row; k++)            minm = min(minm, res[row-1][k]);        return minm;    }};


0 0
原创粉丝点击