[leetcode] 120. Triangle 解题报告
2015-10-29 14:03
288 查看
题目链接:https://leetcode.com/problems/triangle/
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).
思路:本题是动态规划的题目。题意是说从上一个位置 pos[i][j],可以向下走到pos[i+1][j] 或者 pos[i+1][j+1];
如果从上向下扫描,则很难写出状态转移方程,从下往上扫描就会很容看出dp[i][i] = max(dp[i+1][j], dp[i+1][j+1]) + triangle[i][j];
最后一行的状态就是由其本身的值决定的,因此在初始化dp数组的时候就赋值为其本身。另外由于一个位置的值dp[i][j]在被dp[i-1][j] 使用之后将不会再被使用,因此可以优化dp数组成一维,即最大一行triangle[triangle.size()-1].size的大小。时间复杂复为O(N), 空间复杂度为O(N).
代码如下:
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).
思路:本题是动态规划的题目。题意是说从上一个位置 pos[i][j],可以向下走到pos[i+1][j] 或者 pos[i+1][j+1];
如果从上向下扫描,则很难写出状态转移方程,从下往上扫描就会很容看出dp[i][i] = max(dp[i+1][j], dp[i+1][j+1]) + triangle[i][j];
最后一行的状态就是由其本身的值决定的,因此在初始化dp数组的时候就赋值为其本身。另外由于一个位置的值dp[i][j]在被dp[i-1][j] 使用之后将不会再被使用,因此可以优化dp数组成一维,即最大一行triangle[triangle.size()-1].size的大小。时间复杂复为O(N), 空间复杂度为O(N).
代码如下:
class Solution { public: int minimumTotal(vector<vector<int>>& triangle) { if(triangle.size() ==0) return 0; int len = triangle.size(); vector<int> dp(triangle[len-1].size()); for(int i = 0; i < dp.size(); i++) dp[i] = triangle[len-1][i]; for(int i = len-2; i >=0; i--) for(int j =0 ; j < triangle[i].size(); j++) dp[j] = min(dp[j], dp[j+1]) + triangle[i][j]; return dp[0]; } };
相关文章推荐
- POJ 1159 Palindrome 最长公共子序列的问题
- TF-IDF与余弦相似性的应用(一):自动提取关键词
- 探寻C++最快的读取文件的方案(转)
- android 瀑布流照片墙
- SQL 判断临时表是不是存在的方法
- jxl 读写Excel实例
- Dubbo与Zookeeper、SpringMVC整合和使用(负载均衡、容错)
- eclipse的 ctrl + 1 在idea中的 快捷键 alt + shift + l
- 清除数据库缓存
- 关于安装NTKO Office插件的方法
- 虚拟研讨会:如何设计好的RESTful API?
- HDU 1043 Eight(BFS打表+状态去重)
- iOS面试题非技术面试(五)
- html5+css3
- android中的文件操作详解以及内部存储和外部存储
- jmeter - 获取数据库表数据作为参数
- 使用Auto-Scaling服务在Bluemix平台构建可自动伸缩的应用
- QString::section
- 用户故事,史诗,主题(转)
- view视图