Leetcode 120. 三角形最小路径和 解题思路及C++实现
解题思路:
这是一个典型的动态规划问题,定义一个数组 dp,dp[i] (tmp[i]也是)表示到达当前行第 i 个元素的最小路径和。
所以只需要定义一个1维数组dp(n, 0),每循环遍历第 i 行,就更新 dp 的前 i + 1个数。所以循环内新增了一个 tmp 数组。
状态转移方程为:
tmp[j] = min(dp[j], dp[j-1]) + triangle[i][j]; 这是第 i 行,第 j 个元素的更新方程。
注意:每一行的第一个元素和最后一个元素是不满足状态转移方程的,需要单独考虑。
class Solution {
public:int minimumTotal(vector<vector<int>>& triangle) {int n = triangle.size();if(n == 0) return 0;if(n == 1) return triangle[0][0];vector<int> dp(n, 0);dp[0] = triangle[0][0];for(int i = 1; i < n; i++){vector<int> tmp(i+1, 0); //第 i 行 有 i+1 个元素tmp[0] = dp[0] + triangle[i][0]; //每一行的第一个元素if(i >= 2){for(int j = 1; j < i; j++){//动态规划的状态转移方程tmp[j] = min(dp[j], dp[j-1]) + triangle[i][j];}}tmp[i] = dp[i-1] + triangle[i][i]; //每一行的最后一个元素//更新dpfor(int j = 0; j <= i; j++){dp[j] = tmp[j];}}int res = INT_MAX;for(int i = 0 ; i < n; i++){if(res > dp[i]) res = dp[i];}return res;}
};
Leetcode 120. 三角形最小路径和 解题思路及C++实现相关推荐
- leetcode - 120. 三角形最小路径和
120. 三角形最小路径和 ------------------------------------------ 给定一个三角形,找出自顶向下的最小路径和.每一步只能移动到下一行中相邻的结点上. 例如 ...
- LeetCode 120. 三角形最小路径和(动态规划)
题目描述 给定一个三角形,找出自顶向下的最小路径和.每一步只能移动到下一行中相邻的结点上. 例如,给定三角形: [ [2], [3,4], [6,5,7], [4,1,8,3] ] 自顶向下的最小路径 ...
- Leetcode 120. 三角形最小路径和 (每日一题 20210927)
给定一个三角形 triangle ,找出自顶向下的最小路径和.每一步只能移动到下一行中相邻的结点上.相邻的结点 在这里指的是 下标 与 上一层结点下标 相同或者等于 上一层结点下标 + 1 的两个结点 ...
- LeetCode 120. 三角形最小路径和
思路: 从下(倒数第二行)往上开始计算,找到最先和之后,每一行的值重新赋值,直到最顶层就是最小值了. public int minimumTotal(List<List<Integer&g ...
- leetcode--笔记——120. 三角形最小路径和
120. 三角形最小路径和 给定一个三角形 triangle ,找出自顶向下的最小路径和. 每一步只能移动到下一行中相邻的结点上.相邻的结点 在这里指的是 下标 与 上一层结点下标 相同或者等于 上一 ...
- 120. 三角形最小路径和
给定一个三角形,找出自顶向下的最小路径和.每一步只能移动到下一行中相邻的结点上. 相邻的结点 在这里指的是 下标 与 上一层结点下标 相同或者等于 上一层结点下标 + 1 的两个结点. 例如,给定三角 ...
- 【Java语言】力扣系列----120. 三角形最小路径和
给定一个三角形,找出自顶向下的最小路径和.每一步只能移动到下一行中相邻的结点上. 相邻的结点 在这里指的是 下标 与 上一层结点下标 相同或者等于 上一层结点下标 + 1 的两个结点. 例如,给定三角 ...
- 算法:三角形最小路径和
题目 给定一个三角形,找出自顶向下的最小路径和.每一步只能移动到下一行中相邻的结点上. 例如,给定三角形: [[2],[3,4],[6,5,7],[4,1,8,3] ] 1 2 3 4 5 6 自顶向 ...
- 动态规划之求解三角形最小路径问题
求解三角形最小路径问题 一.[问题描述]: 给定 高度为n的一个整数三角形,找出从顶部到底部的最小路径和,只能向先移动相邻的结点.首先输入n,接下来的1~n行,第i行输入i个整数,输出分为2行,第一行 ...
最新文章
- JAVE EE 企业级开发之从零开始学JAVA【51CTO技术论坛】
- 百度地图API使用之实现定位
- OpenCV异常问题(一)
- 全球传媒巨头纷纷布局,VR影视内容的爆点可期
- 5种避免C#.NET中因事件造成内存泄漏的技术
- java 获取oracle mysql sqlserver 链接 connection
- Apollo进阶课程㉛丨Apollo ROS概述
- mssql与oracle不同点,MySql,Mssql,Oracle的优缺点和异同(欢迎补充) *
- Android逆向笔记-IDA Pro动态调试Android程序(真机)
- easyplayerpro 使用说明_EasyPlayerPro(Windows)流媒体播放器开发之ffmpeg log输出报错
- vue可以直接进行运算么_Vue实现手机计算器
- 吴恩达机器学习总结一:初识机器学习
- 从ETL工具到企业云数据管理,在大数据风口的Informatica完成蜕变
- Larry Ellison - 简介
- 软件开发文档的编写---软件研制任务书 (2015-03-14 17:55:03)转载▼ 标签: 软件 文档 任务书 需求 要求	分类: 软件过程改进 一. 简介 客户要
- 用ajax来上传图片,使用AJAX上传图片
- 通达OA2017版连接sqlserver2008数据库
- 三角函数和角与差角公式的图形解释
- html网页中wmode,关于html:Quicktime-Wmode透明问题
- jieba关键词抽取(TF-IDF)与中文抽取式摘要