现在的位置: 首页 > 综合 > 正文

Triangle

2017年12月23日 ⁄ 综合 ⁄ 共 695字 ⁄ 字号 评论关闭

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

[
     [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.

class Solution {
public:
    int minimumTotal(vector<vector<int> > &t) {
        // Start typing your C/C++ solution below
        // DO NOT write int main() function
        
    	typedef vector<int>::size_type st;
		st n=t.size();
		for(st i=1;i<n;i++)
		{
			t[i][0]+=t[i-1][0];
			st m=t[i].size()-1;
			for(st j=1;j<m;j++)
				t[i][j]+=min(t[i-1][j-1],t[i-1][j]);
			t[i][m]+=t[i-1][m-1];
		}
		return *min_element(t[n-1].begin(),t[n-1].end());
    }
};

抱歉!评论已关闭.