博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
LeetCode - Triangle
阅读量:6165 次
发布时间:2019-06-21

本文共 1534 字,大约阅读时间需要 5 分钟。

题目:

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
> triangle) { int m = triangle.size(); return minPath(triangle, 0, 0, m, 0); } private int minPath(List
> 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
> 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]; }}

 

转载地址:http://orkba.baihongyu.com/

你可能感兴趣的文章
《代码敲不队》第四次作业:项目需求调研与分析
查看>>
菜鸡互啄队—— 团队合作
查看>>
HttpWebRequest的GetResponse或GetRequestStream偶尔超时 + 总结各种超时死掉的可能和相应的解决办法...
查看>>
SparseArray
查看>>
第二章
查看>>
android背景选择器selector用法汇总
查看>>
[转]Paul Adams:为社交设计
查看>>
showdialog弹出窗口刷新问题
查看>>
java
查看>>
Vue.js连接后台数据jsp页面  ̄▽ ̄
查看>>
关于程序的单元测试
查看>>
mysql内存优化
查看>>
都市求生日记第一篇
查看>>
Java集合---HashMap源码剖析
查看>>
SQL优化技巧
查看>>
thead 固定,tbody 超出滚动(附带改变滚动条样式)
查看>>
Dijkstra算法
查看>>
css 动画 和 响应式布局和兼容性
查看>>
csrf 跨站请求伪造相关以及django的中间件
查看>>
MySQL数据类型--与MySQL零距离接触2-11MySQL自动编号
查看>>