码迷,mamicode.com
首页 > 其他好文 > 详细

【leetcode】Triangle

时间:2015-05-19 18:15:53      阅读:94      评论:0      收藏:0      [点我收藏+]

标签:

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 class Solution{
 2 public:
 3     int minimumTotal(vector<vector<int> > &triangle){
 4         int n=triangle.size();
 5         if(n==0) return 0;
 6 
 7         int *sum=new int[n+1];
 8 
 9         sum[0]=triangle[0][0];
10 
11         for(int i=1;i<n;i++)
12         {
13             sum[i]=sum[i-1]+triangle[i][i];
14             for(int j=i-1;j>0;j--)
15                 sum[j]=min(sum[j],sum[j-1])+triangle[i][j];
16             sum[0]=sum[0]+triangle[i][0];
17         }
18 
19         int min=INT_MAX;
20         for(int i=0;i<n;i++)
21             if(sum[i]<min)
22                 min=sum[i];
23 
24         return min;
25     }
26 };

 

【leetcode】Triangle

标签:

原文地址:http://www.cnblogs.com/jawiezhu/p/4514963.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!