首页 > 其他 > 详细

LeetCode120 - Triangle

时间:2017-09-28 15:29:17      阅读:272      评论:0      收藏:0      [点我收藏+]

题目描述:

技术分享

思路1:

利用动态规划。由于空间复杂度的限制,直接在triangle数组上进行修改,即把triangle数组当作dp数组。当j == 0时(即每一行的第一个元素),triangle[i][j] += triangle[i - 1][j];当j == col - 1时(即每一行的最后一个元素),triangle[i][j] += triangle[i - 1][j - 1];其余情况,triangle[i][j] += min(triangle[i - 1][j - 1], triangle[i - 1][j])。

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

        }
    int minSum = INT_MAX;
    for (int k = 0;k < triangle[row - 1].size();k++)//在最后一行中找出最小的那个就是最小的和路径
        if (triangle[row - 1][k] < minSum)
            minSum = triangle[row - 1][k];
    return minSum;

}
};

 

LeetCode120 - Triangle

原文:http://www.cnblogs.com/vincent93/p/7606879.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!