---恢复内容开始---

题目的链接

简单的动态规划题,使用了二维dp数组就能很好的表示。

由于有边界的问题,所以这个dp数组为 dp[n+1][n+1]。

dp[i][j]意思是终点为(i-1,j-1)点的路径最小和。

我们需要把这个三角形变成方阵来看,先看看样例:

[
[2],
[3,4],
[6,5,7],
[4,1,8,3]
]

变成方阵之后就变成了

[

[2, INT_MAX,INT_MAX, INT_MAX],

[3,               4,INT_MAX, INT_MAX],

[6,               5,             7, INT_MAX],

[4,               1,             8,              3],

]

有上面方阵很容易得出这个状态转移方程为

dp[i][j]=min(dp[i-1][j-1],dp[i-1][j])+triangle[i-1][j-1];

为了避开数组越界(人i=0或j=0)的问题,我们的dp数组容量比triange大一:即triangle[i][j]->dp[i+1][j+1]

class Solution {
public:
int minimumTotal(vector<vector<int>> &triangle)
{
size_t n = triangle.size();
int dp[n + ][n + ];
memset(dp, 0x3f, sizeof(dp));
int ans = INT_MAX;
dp[][] = triangle[][];
for (size_t i = ; i <= n; i++)
{
for (size_t j = ; j <= triangle[i - ].size(); j++)
{
dp[i][j] = min(dp[i - ][j - ], dp[i - ][j]) + triangle[i-][j-];
}
}
for (size_t i = ; i <= n; i++)
{
ans = min(ans, dp[n][i]);
}
return ans;
}
};

或者根本不用再建立一个新的dp数组,而是直接在triangle数组上进行操作。比如

class Solution {
public:
int minimumTotal(vector<vector<int>>& triangle) {
if(triangle.size() == || triangle[].size() == ) return ;
int n = triangle.size();
for(int i = n - ; i >= ; i--)
for(int j = ; j < i + ; j++)
triangle[i][j] += min(triangle[i+][j], triangle[i+][j+]);
return triangle[][];
}
};

这一题的升级版问题可以看我的另一篇随笔: 下降路径最小和

[Leetcode]120.三角形路径最小和的更多相关文章

  1. Java实现 LeetCode 120 三角形最小路径和

    120. 三角形最小路径和 给定一个三角形,找出自顶向下的最小路径和.每一步只能移动到下一行中相邻的结点上. 例如,给定三角形: [ [2], [3,4], [6,5,7], [4,1,8,3] ] ...

  2. [Leetcode]931.下降路径最小和

    题目链接 这一题目首先需要弄懂题目的意思,下降路径最小和指的是在方阵中可以从上往下行走,走过后获得的值最小,方向可以是走左下,右下,直下. 题目和传统的动态规划一样,把边界的值先初始化,然后通过状态转 ...

  3. leetcode 120. 三角形最小路径和 JAVA

    题目: 给定一个三角形,找出自顶向下的最小路径和.每一步只能移动到下一行中相邻的结点上. 例如,给定三角形: [ [2], [3,4], [6,5,7], [4,1,8,3] ] 自顶向下的最小路径和 ...

  4. LeetCode 120——三角形最小路径和

    1. 题目 2. 解答 详细解答方案可参考北京大学 MOOC 程序设计与算法(二)算法基础之动态规划部分. 从三角形倒数第二行开始,某一位置只能从左下方或者右下方移动而来,因此,我们只需要求出这两者的 ...

  5. LeetCode 120. 三角形最小路径和(Triangle)

    题目描述 给定一个三角形,找出自顶向下的最小路径和.每一步只能移动到下一行中相邻的结点上. 例如,给定三角形: [ [2], [3,4], [6,5,7], [4,1,8,3] ] 自顶向下的最小路径 ...

  6. leetcode 120. 三角形最小路径和 及 53. 最大子序和

    三角形最小路径和 问题描述 给定一个三角形,找出自顶向下的最小路径和.每一步只能移动到下一行中相邻的结点上. 例如,给定三角形: [ [2], [3,4], [6,5,7], [4,1,8,3] ] ...

  7. [LeetCode 120] - 三角形(Triangle)

    问题 给出一个三角形,找出从顶部至底部的最小路径和.每一步你只能移动到下一行的邻接数字. 例如,给出如下三角形: [ [2], [3,4], [6,5,7], [4,1,8,3] ] 从顶部至底部的最 ...

  8. LeetCode 5129. 下降路径最小和 II Minimum Falling Path Sum II

    地址 https://leetcode-cn.com/contest/biweekly-contest-15/problems/minimum-falling-path-sum-ii/ 题目描述给你一 ...

  9. LeetCode 931. 下降路径最小和 详解

    题目详情 给定一个方形整数数组 A,我们想要得到通过 A 的下降路径的最小和. 下降路径可以从第一行中的任何元素开始,并从每一行中选择一个元素.在下一行选择的元素和当前行所选元素最多相隔一列. 示例: ...

随机推荐

  1. flex布局中的主轴和侧轴的确定

    1.主轴和侧轴是通过flex-direction确定的 如果flex-direction是row或者row-reverse,那么主轴就是justify-contain 如果flex-direction ...

  2. js判断 pc 手机 浏览器

    <script> var result = window.matchMedia('(max-width: 700px)'); var browser={ versions:function ...

  3. altera FIFO知识点

    虽然是很常用的IP,但经常用时还要看下文档,某些知识点如果能记住的话,还是可以节省很多时间的.   (1)输入输出位宽不相等 这里以输入16位数据输出为8位数据为例,写入两16位的数据,读出4个8位的 ...

  4. Unicode和多字节的相互转换

    多字节转Unicode 四步: Step1 #include <iostream> #include "windows.h" using namespace std; ...

  5. MVC 图片上传 带进度条(转)

    MVC 图片上传小试笔记 form.js 这个插件已经是很有名的,结合MVC的html辅助方法异步上传就很简单了.jQuery Form Plugin :http://www.malsup.com/j ...

  6. quartz之hello(java)

    quartz    任务调度框架 简单的说:就是在特定的时间,干指定的事件,然后具体到某个对象去做 quartz初之体验: 1.pom.xml文件(导入jar包) <dependencies&g ...

  7. 图解Eclipse中配置Maven并创建Maven的Web工程

      打开eclipse,Windows->Preferences,如下图所示: 2 在Preferences作如下配置,如下图所示: 3 配置完Maven的安装目录后,还需要配置Maven的配置 ...

  8. Nutch1.2 的安装与使用

    Nutch1.2的安装与使用 1.nutch1.2下载    下载地址 http://archive.apache.org/dist/nutch/     2.nutch1.2目录   bin:用于命 ...

  9. 3.Django视图

    视图 视图接受Web请求并且返回Web响应 视图就是一个python函数,被定义在views.py中 响应可以是一张网页的HTML内容,一个重定向,一个404错误等等 响应处理过程如下图: URLco ...

  10. cudnn 安装步骤

    上官网下载对应的cudnn https://developer.nvidia.com/cudnn 下载完cudnn后,命令行输入文件所在的文件夹 (ubuntu为本机用户名) cd home/ubun ...