[Leetcode]Triangle
来源:互联网 发布:易趣网和淘宝网的不同 编辑:程序博客网 时间:2024/06/06 01:40
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, wheren is the total number of rows in the triangle.
class Solution {public: /*algorihtm: dp dp(i,j) = min{dp(i-1,j-1),dp(i-1,j))} + triangle(i,j) time O(m*n) space O(m*n) */ int minimumTotal(vector<vector<int>>& triangle) { int m = triangle.size(),n = triangle[m-1].size(); vector<vector<int> >dp(m,vector<int>(n,0)); dp[0][0] = triangle[0][0]; for(int i = 1;i < m;i++){ int size = triangle[i].size(); for(int j = size - 1;j >= 0;j--){ if(j == size - 1)dp[i][j] = dp[i-1][j-1]; else if(j == 0)dp[i][j] = dp[i-1][j]; else{ dp[i][j] = min(dp[i-1][j-1],dp[i-1][j]); } dp[i][j] += triangle[i][j]; } } int min = INT_MAX; for(int i = 0;i < n;i++){ if(min > dp[m-1][i])min = dp[m-1][i]; } return min; }};
class Solution {public: /*algorihtm: dp dp(i,j) = min{dp(i-1,j-1),dp(i-1,j))} + triangle(i,j) optimze space to O(n) time O(m*n) space O(n) */ int minimumTotal(vector<vector<int>>& triangle) { int m = triangle.size(),n = triangle[m-1].size(); vector<int>dp(n,0); dp[0] = triangle[0][0]; for(int i = 1;i < m;i++){ int size = triangle[i].size(); for(int j = size - 1;j >= 0;j--){ if(j == size - 1)dp[j] = dp[j-1]; else if(j == 0);//dp[j] = dp[j]; else{ dp[j] = min(dp[j-1],dp[j]); } dp[j] += triangle[i][j]; } } int min = INT_MAX; for(int i = 0;i < n;i++){ if(min > dp[i])min = dp[i]; } return min; }};
0 0
- LeetCode : Triangle
- [LeetCode] Triangle
- [Leetcode] Triangle
- [LeetCode] Triangle
- 【leetcode】Triangle
- LeetCode - Triangle
- [LeetCode]Triangle
- [Leetcode]Triangle
- [leetcode]Triangle
- Leetcode: Triangle
- [LeetCode] Triangle
- LeetCode-Triangle
- [leetcode] Triangle
- [LeetCode] Triangle
- LeetCode - Triangle
- 【Leetcode】Triangle
- LeetCode | Triangle
- [leetcode]Triangle
- 一,开篇,一个完整的LibGDX小游戏
- 【信息安全知识】计算机病毒和木马
- HDFS应用
- Swift高级开发语言--函数
- Promise的前世今生和妙用技巧
- [Leetcode]Triangle
- Android-Universal-Image-Loader 图片异步加载类库的使用(超详细配置)
- Java-session过期后,拦截器拦截后页面跳不出iframe框架问题
- 字符串的包含
- POJ 1861 Network Krusakl模板题 最小生成树
- android底层开发-android基础架构
- IntelliJ IDEA及 tomcat 关于项目本地部署和远程部署的相关讨论
- 简历二
- java开发前奏