leetcode triangle

class Solution {
public:
    int minimumTotal(vector<vector<int> > &triangle) {
    if (triangle.size() == 0)
    return 0;      
    vector<int> f(triangle[triangle.size()-1].size());
    f[0] = triangle[0][0];
    for(int i = 1; i < triangle.size(); i++)
    {
         for(int j = triangle[i].size() - 1; j >= 0; j--)
         if (j == 0)
         f[j] = f[j] + triangle[i][j];
         else if (j == triangle[i].size() - 1)
            f[j] = f[j-1] + triangle[i][j];
        else
            f[j] = min(f[j-1], f[j]) + triangle[i][j];
    }          
    int ret = INT_MAX;
    for(int i = 0; i < f.size(); i++)
        ret = min(ret, f[i]);
    return ret;       
    }
};

  

posted @ 2013-09-03 21:08  代码改变未来  阅读(234)  评论(0编辑  收藏  举报