LeetCode - Triangle
2016-01-14 15:10
211 查看
题目:
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
Note:
Bonus point if you are able to do this using only O(n) extra space, where n is the total number of rows in the triangle.
思路:
1) 递归,代码很简单,但超时了
2) 从下往上进行扫描
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).
Note:
Bonus point if you are able to do this using only O(n) extra space, where n is the total number of rows in the triangle.
思路:
1) 递归,代码很简单,但超时了
package recursion; import java.util.ArrayList; import java.util.List; public class Triangle { public int minimumTotal(List<List<Integer>> triangle) { int m = triangle.size(); return minPath(triangle, 0, 0, m, 0); } private int minPath(List<List<Integer>> triangle, int row, int col, int m, int prevTotal) { if (row >= m) return prevTotal; prevTotal += triangle.get(row).get(col); return Math.min(minPath(triangle, row + 1, col, m, prevTotal), minPath(triangle, row + 1, col + 1, m, prevTotal)); } }
2) 从下往上进行扫描
package recursion; import java.util.ArrayList; import java.util.List; public class Triangle { public int minimumTotal(List<List<Integer>> triangle) { int m = triangle.size(); int n = triangle.get(m - 1).size(); int[] res = new int[n + 1]; for (int i = m - 1; i >= 0; --i) { for (int j = 0; j < triangle.get(i).size(); ++j) { res[j] = Math.min(res[j], res[j + 1]) + triangle.get(i).get(j); } } return res[0]; } }
相关文章推荐
- js实现prototype扩展的方法(字符串,日期,数组扩展)
- 导入javax包时出现的问题
- Python语法备忘
- org/mariadb/jdbc/Driver : Unsupported major.minor version 51.0解决办法
- 数据库连接类
- 算法竞赛入门经典,练习代码 3.4.4重新实现库函数
- LVS -linux L4 load balance
- 51nod1214特殊的排序
- hibernate-release-5.0.6.Final简单环境搭建
- sessionStroage 的有效期
- 【Android】错误:Installation error: INSTALL_FAILED_VERSION_DOWNGRADE
- javascript 基础API
- ExtJS5.0 菜鸟的第一天
- python操作mysql数据库
- java连接hiveserver2
- 详解C++语言中的加法运算符与赋值运算符的用法
- 跟siki老师学C#第一天
- 修改CI3.0的session
- 理解图形化执行计划 -- 第3部分:分析执行计划
- Map里面存放Map或List的用法