Middle-题目60:120. Triangle
2016-05-31 16:31
453 查看
题目原文:
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
The minimum path sum from top to bottom is 11 (i.e., 2 + 3 + 5 + 1 = 11).
题目大意:
给出一个三角形,求出从顶点到底边路径的最小值,每次只能向下移动到相邻的元素上。
分析:
令dp[i][j]代表从顶点走到[I,j]点的最小和,那么要么是从正上方来的,要么是从左上方来的,故有:
最后再对最后一行的dp值取最小值。
源码:(language:java)
成绩:
5ms,beats 57.96%,众数4ms,23.76%
Cmershen的碎碎念:
这道题在本科的《算法设计与分析》课上学过原题,可见是一个很经典也很有代表性的DP问题。
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).
题目大意:
给出一个三角形,求出从顶点到底边路径的最小值,每次只能向下移动到相邻的元素上。
分析:
令dp[i][j]代表从顶点走到[I,j]点的最小和,那么要么是从正上方来的,要么是从左上方来的,故有:
dp[i][j] = min(dp[i-1][j], dp[i-1][j-1])+triangle[i][j],对两边的特殊讨论一下。
最后再对最后一行的dp值取最小值。
源码:(language:java)
public class Solution { public int minimumTotal(List<List<Integer>> triangle) { int size = triangle.size(); if(size == 1) return triangle.get(0).get(0); int[][] dp = new int[size][size]; dp[0][0] = triangle.get(0).get(0); int min = Integer.MAX_VALUE; for(int i = 1; i < size; i++) { for(int j = 0 ; j <= i ; j++) { if(j == 0) dp[i][j] = triangle.get(i).get(j) + dp[i-1][j]; else if(j == i) dp[i][j] = triangle.get(i).get(j) + dp[i-1][j-1]; else dp[i][j] = triangle.get(i).get(j) + Math.min(dp[i-1][j], dp[i-1][j-1]); if(i == size-1) min = Math.min(min, dp[i][j]); } } return min; } }
成绩:
5ms,beats 57.96%,众数4ms,23.76%
Cmershen的碎碎念:
这道题在本科的《算法设计与分析》课上学过原题,可见是一个很经典也很有代表性的DP问题。
相关文章推荐
- 微信公众号发送文本消息时如何在文本消息中包含超链接
- L1 L2范式的详解以及Scikit-learn上基于L1 L2范式正则化的实例
- android产品研发(二)-->启动页优化
- SpringMVC中的ContentNegotiatingViewResolver配置
- UNIX网络编程:互斥锁和条件变量
- Linux下Tomcat catalina.out自动归档,以及logrotate 配置详解
- Middle-题目59:201. Bitwise AND of Numbers Range
- 【5月英语——我的小baby怎么样了】
- ldd命令 查看程序依赖库
- 在使用mybatis时进行批删除或批添加用到的service层事务的理解
- 一个div 内嵌套多个div ,并使其全部居中
- 详解C中volatile关键字
- SpringMVC之非注解开发(一)(纯手工打造)
- [css] CSS编码规范
- 安装fast cgi
- Elasticsearch--配置文件
- RecyclerView刷新Item会造成闪烁bug解决
- 第13周项目3—形状类族中的纯虚函数
- Java获得登录的IP和MAC地址
- POJ1603