LeetCode OJ:Triangle(三角形)
2015-10-22 19:36
309 查看
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
一开始的题目的意思理解错了 ,以为是位数相差一就是临近的意思,但实际上这里意思是图形上面的那种临近,和原来那个实际上是不一样的。用到了dfs,我一开始还想用一个min的二位vector来保存结果
但是实际上不用,直接用原来的triangle数组就可以保存结果了:
这个题用java写还是略坑爹,各种get,add写起来感觉好麻烦,暂时就不写了。
For example, given the following triangle
[ [2], [3,4], [6,5,7], [4,1,8,3] ]
一开始的题目的意思理解错了 ,以为是位数相差一就是临近的意思,但实际上这里意思是图形上面的那种临近,和原来那个实际上是不一样的。用到了dfs,我一开始还想用一个min的二位vector来保存结果
但是实际上不用,直接用原来的triangle数组就可以保存结果了:
class Solution { public: int minimumTotal(vector<vector<int>>& triangle) { if(triangle.size() == 0 || triangle[0].size() == 0) return 0; //vector<vector<int>>minRet(triangle.size(), vector<int>(triangle[0].size(), 0)); for(int i = 1; i < triangle.size(); ++i){ // i从1开始 for(int j = 0; j < triangle[i].size(); ++j){ if(j == 0){ triangle[i][j] += triangle[i - 1][0]; }else if(j == triangle[i].size() - 1){ triangle[i][j] += triangle[i - 1][j - 1]; }else{ triangle[i][j] += min(triangle[i - 1][j - 1], triangle[i - 1][j]); } } } int horSz = triangle.size(); int sz = triangle[horSz - 1].size(); int ret = triangle[horSz - 1][0]; for(int i = 1; i < sz; ++i){ if(ret > triangle[horSz - 1][i]) ret = triangle[horSz - 1][i]; } return ret; } };
这个题用java写还是略坑爹,各种get,add写起来感觉好麻烦,暂时就不写了。
相关文章推荐
- 关于Android Studio导入.9图片报错问题
- POJ2245 Lotto
- ajaxForm,ajaxSubmit
- MONGO JS 脚本
- dhcp snooping原理
- Facebook内部高效工作PPT指南
- 1038. 统计同成绩学生(20)
- 使用系统拍照返回的照片默认旋转90问题
- iOS开发拓展篇—UIDynamic(捕捉行为)
- 第五次作业
- [Leetcode]Unique Paths II
- string 的实例分析。
- hdu 4788 Hard Disk Drive(水)
- iOS开发拓展篇—UIDynamic(重力行为+碰撞检测)
- 关于Quartz 2D绘图的简单使用
- openOffice在linux和window转的有些不同
- hadoop学习第一天
- Recruit Coupon Purchase Winner's Interview: 2nd place, Halla Yang
- spring mvc配置ObjectMapper忽略无法识别的字段,以及一些博客推荐
- 对几种流行的Javascript模板引擎的测试对比