- 浏览: 186056 次
- 性别:
- 来自: 济南
文章分类
最新评论
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).
我们用动态规划来解决,从下往上开始相加,例如题目中的例子,最后一行是[4,1,8,3],我们每次从中选取相邻两个元素中较小的那个与它上面序列[6,5,7]对应的元素相加, 4和1我们选取1,然后与6相加,1和8我们选取1与5相加,这样一直更新到最上面的一行,就是我们要找的结果。代码如下:
上面的代码没有什么问题,可以顺利AC,空间复杂度为O(1)。但是它改变了原有的数据,如果题目要求我们不能改变原有的数据,我们可以借助一个数组来完成。代码如下:
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).
我们用动态规划来解决,从下往上开始相加,例如题目中的例子,最后一行是[4,1,8,3],我们每次从中选取相邻两个元素中较小的那个与它上面序列[6,5,7]对应的元素相加, 4和1我们选取1,然后与6相加,1和8我们选取1与5相加,这样一直更新到最上面的一行,就是我们要找的结果。代码如下:
public class Solution { public int minimumTotal(List<List<Integer>> triangle) { if(triangle == null) return 0; for(int i = triangle.size() - 1; i > 0; i--) { for(int j = 0; j < triangle.get(i - 1).size(); j++) { triangle.get(i - 1).set(j, Math.min(triangle.get(i).get(j), triangle.get(i).get(j + 1)) + triangle.get(i - 1).get(j)); } } return triangle.get(0).get(0); } }
上面的代码没有什么问题,可以顺利AC,空间复杂度为O(1)。但是它改变了原有的数据,如果题目要求我们不能改变原有的数据,我们可以借助一个数组来完成。代码如下:
public class Solution { public int minimumTotal(List<List<Integer>> triangle) { if(triangle == null) return 0; int[] dp = new int[triangle.size() + 1]; for(int i = triangle.size() - 1; i >= 0; i--) { for(int j = 0; j < triangle.get(i).size(); j++) { dp[j] = triangle.get(i).get(j) + Math.min(dp[j], dp[j + 1]); } } return dp[0]; } }
发表评论
-
498. Diagonal Traverse
2019-11-15 13:52 273Given a matrix of M x N eleme ... -
496 Next Greater Element I
2019-11-14 13:50 275You are given two arrays (witho ... -
Word Break II
2016-03-09 03:15 393Given a string s and a dictiona ... -
Insert Interval
2016-03-08 02:11 382Given a set of non-overlapping ... -
Merge Intervals
2016-03-07 05:25 506Given a collection of intervals ... -
Merge k Sorted Lists
2016-03-07 04:03 574Merge k sorted linked lists and ... -
Multiply Strings
2016-03-06 07:27 487Given two numbers represented a ... -
N-Queens II
2016-03-06 03:06 674Follow up for N-Queens problem. ... -
N-Queens
2016-03-06 02:47 479The n-queens puzzle is the prob ... -
First Missing Positive
2016-03-05 03:09 438Given an unsorted integer array ... -
Spiral Matrix
2016-03-04 03:39 589Given a matrix of m x n element ... -
Trapping Rain Water
2016-03-04 02:54 601Given n non-negative integers r ... -
Repeated DNA Sequences
2016-03-03 03:10 433All DNA is composed of a series ... -
Increasing Triplet Subsequence
2016-03-02 02:48 910Given an unsorted array return ... -
Maximum Product of Word Lengths
2016-03-02 01:56 937Given a string array words, fin ... -
LRU Cache
2016-02-29 10:37 610Design and implement a data str ... -
Super Ugly Number
2016-02-29 07:07 705Write a program to find the nth ... -
Longest Increasing Path in a Matrix
2016-02-29 05:56 873Given an integer matrix, find t ... -
Coin Change
2016-02-29 04:39 798You are given coins of differen ... -
Minimum Height Trees
2016-02-29 04:11 738For a undirected graph with tre ...
相关推荐
本案例中,我们关注的是一个名为`triangle`的重载函数,该函数用于计算三角形的周长和面积。以下是关于这个主题的详细讲解。 首先,我们需要理解函数重载的概念。在MATLAB中,函数重载通过提供多个具有相同名称但...
(三角形类)设计一个扩展自抽象类GeometricObject 的新的Triangle 类。绘制Triangle 类和GeometricObject 类的UML图并实现Triangle 类。 编写一个测试程序,提示用户输入三角形的三条边、一种颜色以及一个表明该...
Triangle extends GeometricObject 设计一个名为Triangle的类来继承GeometricObject类。该类包括: 三个名为side1,side2,side3的double类型数据域来表示这个三角形的三条边,它们的默认值是1.0。 一个无参构造...
设计一个Triangle类,通过运算符重载来实现两个三角形的面积相加。 operator + (const Triangle& t1,const Triangle& t2); 如对你有用的话,希望你来下载啊。
三角剖分库Triangle在windows下编译的.exe .dll .lib 主要是我的原创博文的最终成果:https://blog.csdn.net/csubai07/article/details/102868479
"Triangle-响应式Bootstrap模板"是一款专为适应不同设备屏幕设计的网页模板,它充分利用了Bootstrap框架的强大功能,确保在个人电脑(PC)和移动设备(mobile)上都能提供一致且优秀的用户体验。Bootstrap是一个广泛...
《Triangle GAN 讨论概要》 Triangle GAN,作为一种独特的生成对抗网络(GAN)架构,其核心在于引入了两个判别器D1和D2,形成一个三角形结构,从而能处理更为复杂的样本对关系。这个模型的提出旨在解决图像分类、...
《从零开始学习光线追踪:基于Triangle Mesh的实现》 光线追踪是一种计算机图形学技术,用于模拟光在虚拟环境中的传播路径,以生成极其逼真的图像。本项目"raytracegroundup_v1.8_TriangleMesh_20170306"深入浅出地...
The Triangle Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 26414 Accepted: 15435 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 program...
本篇文章将深入探讨`GL_TRIANGLE_STRIP`渲染模式以及如何在OpenGL ES中实现纹理贴图。`GL_TRIANGLE_STRIP`是OpenGL的一个基本绘图模式,它通过连接连续的顶点来创建一个三角形条带,可以有效地减少绘制多个相邻...
以贝尔数为基础,参考杨辉三角形,也可以生成贝尔三角形(Bell triangle),也称为艾特肯阵列(Aitken's Array),皮埃斯三角形(Peirce Triangle)。 贝尔三角形的构造方法: (1)第一行第一个元素是1,即a[1][1]...
用于求三角形的面积和周长包括point点类和triangle类 判断是否是三点一线
The number of rows in the triangle is > 1 but <= 100. The numbers in the triangle, all integers, are between 0 and 99. 输出 Your program is to write to standard output. The highest sum is written as ...
三角网(Triangle Delaunay Triangulation,简称TDT)是计算机图形学、地理信息系统和土木工程等领域中常用的一种数据结构,用于表示多边形网格。它以Delaunay三角剖分为基础,确保了每个三角形的内切圆不包含任何...
【OpenGL】十四、OpenGL 绘制三角形 ( 绘制 GL_TRIANGLE_STRIP 三角形 | GL_TRIANGLE_STRIP 三角形绘制分析 ) https://hanshuliang.blog.csdn.net/article/details/112799758 博客源码快照
在本案例中,"triangle2D3Node" 提到的是一个二维空间中的三节点三角形元素在MATLAB环境下实现的有限元程序。MATLAB是一款强大的数值计算和数据可视化软件,它提供了丰富的工具箱来支持用户进行各种计算任务,包括...
开源项目“esimov-triangle.zip”是一个基于Go语言实现的图像处理工具,它能够将普通的数字图像转化为计算机艺术风格的图像。这个项目的核心功能是三角化算法,它通过将图像拆分成多个三角形来创建出独特的艺术效果...
/* (triangle.c) */ /* */ /* Version 1.6 */ /* July 28, 2005 */ /* */ /* Copyright 1993, 1995, 1997, 1998, 2002, 2005 */ /* Jonathan Richard Shewchuk */ /* 2360 Woolsey #H */ /* Berkeley, California ...
"Go-triangle-使用Delaunay三角网将图像转换为计算机艺术"这个项目,利用Go语言实现了一个将像素图像转换成基于Delaunay三角网的艺术作品的工具。Delaunay三角网是一种几何构造,广泛应用于各种领域,如地理信息系统...
编写一个接口Shape类,Rectangle、Triangle、Square等三个类实现(implements)接口Shape,并通过实现Shape中的接口来实现具体功能。 编写两个接口Phone、GameMachine,MobilePhone类实现接口Phone和GameMachine中...