问题描述

lintcode

笔记

代码1

设置buff[i][j]为:以元素(i,j)结尾的最小路径和。
buff[i][j]应该是buff[i-1][j-1]buff[i-1][j]中的较小值再加上当前的triangle[i][j]
则状态转移方程为:
buff[i][j] = min(buff[i-1][j-1], buff[i-1][j] + triangle[i][j]
初始条件为:
buff[0][0] = triangle[0][0]

注意

判断越界问题也用到了一个小技巧,忘了从哪学来的了。

//要取buff[i-1][j-1],和buff[i-1][j],但是要保证不越界。
//第i-1行的j的取值范围为[0, i-1]
int lo = max(0, j-1);//当j-1小于0的时候只取0,大于等于0的时候取自身。
int hi = min(j, i-1);//当j大于i-1的时候只取i-1,小于等于i-1的时候取自身。

代码2

题目要求优化空间复杂度。其实不需要用二维数组,因为每一行的值只与上一行的值相关,因此可以只用一行做缓存即可。(代码2)
在这里用到了背包问题中的小技巧,每一行从后往前更新,以防覆盖前面要使用的值。

注意

看来,要将二维空间节省成一维空间的时候,都要考虑一下从后往前向前更新这一小技巧。

代码1

class Solution {
public:/*** @param triangle: a list of lists of integers.* @return: An integer, minimum path sum.*/int minimumTotal(vector<vector<int> > &triangle) {// write your code hereconst int len = triangle.size();vector<vector<int>> buff(len, vector<int>(len));buff[0][0] = triangle[0][0];for (int i = 1; i < len; i++){for (int j = 0; j <= i; j++){// 要取buff[i-1][j-1],和buff[i-1][j],但是要保证不越界。// 第i-1行的j的取值范围为[0, i-1]int lo = max(0, j-1);int hi = min(j, i-1);buff[i][j] = min(buff[i-1][lo], buff[i-1][hi]) + triangle[i][j];}}int res = buff[len-1][0];for (int i = 1; i < len; i++)res = min(res, buff[len-1][i]);return res;}
};

代码2

class Solution {
public:/*** @param triangle: a list of lists of integers.* @return: An integer, minimum path sum.*/int minimumTotal(vector<vector<int> > &triangle) {// write your code hereconst int len = triangle.size();vector<int> buff(len);buff[0] = triangle[0][0];for (int i = 1; i < len; i++){for (int j = i; j >= 0; j--){int lo = max(0, j-1);int hi = min(j, i-1);buff[j] = min(buff[lo], buff[hi]) + triangle[i][j];}}int res = buff[0];for (int i = 1; i < len; i++)res = min(res, buff[i]);return res;}
};

lintcode triangle 数字三角形相关推荐

  1. The Triangle(数字三角形)

    题目叙述 Description 7 3 8 8 1 0 2 7 4 4 4 5 2 6 5(Figure 1) Figure 1 shows a number triangle. Write a p ...

  2. 90 数字三角形(Triangle)

    文章目录 1 题目 2 解决方案 2.1 思路和图解 2.1.1 遍历法和分治法 2.1.2 带记忆化搜索的分治法 2.1.3 至底向上的动态规划 2.1.4 至顶向下的动态规划 2.3 时间复杂度 ...

  3. 【蓝桥杯】【python】数字三角形

    问题描述 虽然我前后用了三种做法,但是我发现只有"优化思路_1"可以通过蓝桥杯官网中的测评,但是如果用c/c++的话,每个都通得过,足以可见python的效率之低(但耐不住人家好用 ...

  4. C++数字三角形问题(动态规划)

    一.问题描述 ★问题描述:给字一个由n行数字组成的数字三角形(等腰三角形).试设计一个算法,计算出从三角形的顶至底的一条路径,使该路径经过的数字总和最大. ★算法设计:对于给定的由n行数字组成的数字三 ...

  5. 数字三角形求最大路径

    /**问题描述] 上图给出了一个数字三角形.从三角形的顶部到底部有很多条不同的路径. 对于每条路径,把路径上面的数加起来可以得到一个和,你的任务就是找到最 大的和.路径上的每一步只能从一个数走到下一层 ...

  6. python--lintcode109.数字三角形(动态规划)

    描述 给定一个数字三角形,找到从顶部到底部的最小路径和.每一步可以移动到下面一行的相邻数字上. 如果你只用额外空间复杂度O(n)的条件下完成可以获得加分,其中n是数字三角形的总行数. 您在真实的面试中 ...

  7. 经典算法——数字三角形的三种解题方法:递推、记忆化搜索、动态规划

    上题目链接: http://acm.sdut.edu.cn/onlinejudge2/index.php/Home/Index/problemdetail/pid/1730.html  递推方法: i ...

  8. 数字三角形问题(动态规划)

    目录 问题描述 分析 问题描述 问题描述:给定一个由n行数字组成的数字三角形,如图所示.图数字三角形试设计一个算法,计算出从三角形的顶至底的一条路径,使该路径经过的数字总和最大. 算法设计:对于给定的 ...

  9. Java实现-数字三角形

    给定一个数字三角形,找到从顶部到底部的最小路径和.每一步可以移动到下面一行的相邻数字上. 注意事项 如果你只用额外空间复杂度O(n)的条件下完成可以获得加分,其中n是数字三角形的总行数. 您在真实的面 ...

  10. vijos 1006 晴天小猪历险记之Hill——数字三角形的终极变化

    题目链接:https://vijos.org/p/1006 数字三角形原题看这里:http://www.cnblogs.com/huashanqingzhu/p/7326837.html 背景 在很久 ...

最新文章

  1. Jvm面试题及答案 100道(持续更新)
  2. 【PHP】微信官方代码Log调试输出类,面向对象设计模式!来看看,你会有收益!...
  3. 两篇 Spring 总结(一)
  4. Tiktok的红利期,你要加入吗?
  5. spark kafka java api_java实现spark streaming与kafka集成进行流式计算
  6. 益智小游戏(app)
  7. 20162319莫礼钟 2016-2017-2 《程序设计与数据结构》第2周学习总结
  8. 【备用】SQL SERVER存储过程执行速度慢的问题
  9. kali linux捉肉鸡教程,简单扫4899端口捉肉鸡菜鸟教程详细版
  10. 计算机专业学生学校活动,校园IT文化节活动策划方案
  11. 华硕x205ta小本驱动下载页面
  12. Shell 命令变量去除空格方法
  13. 公告栏文本横向循环滚动
  14. Android使用串口打印机打印图片方法
  15. 跨平台调用之一——java调用so库
  16. 苹果账户登录_开心,安卓手机支持和iPhone内APP账户互通
  17. java 字体变形_怎样用java绘制弧形文字
  18. 编写Java程序时的一些经验总结
  19. 目标检测论文阅读:GHM(anchor based)
  20. 如何设计网页?快速制作网页秘诀!

热门文章

  1. go 学习笔记之解读什么是defer延迟函数
  2. 蛋白质二级结构预测-Chou-Fasman预测方法
  3. 【干货】PS超实用功能:美化照片
  4. 什么是白箱测试、黑箱测试、回归测试?
  5. 支持中文!秒建 wiki 知识库的开源项目,构建私人知识网络
  6. 忍无可忍?英特尔执行副总裁撰文《高通的诡辩被戳穿了》指责高通
  7. 搭档之家|打造信息交互平台,推进合作新发展
  8. Docker容器之网络管理、端口映射、容器间的互联、Dockerfile完成镜像封装
  9. java poi写doc文件_如何使用POI hwpfdocument在java中的.doc文件中编写大量文本
  10. BEC listen and translation exercise 39