1957

无聊蛋疼的1957写的低端博客
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

[leetcode]triangle

Posted on 2013-08-25 12:52  1957  阅读(295)  评论(0编辑  收藏  举报

简单题,一般的dp入门题。

只是要求O(n)的空间,目测是想要求数组迭代吧。

但是从上往下推就不用额外空间了

PS。写了if没写else都是sb,害得我看这个简单代码调试了10分钟

class Solution {
public:
    int minimumTotal(vector<vector<int> > &triangle) {
        // Start typing your C/C++ solution below
        // DO NOT write int main() function
        for(int i = 1 ; i < triangle.size() ; i++){
                for(int j = 0 ; j < triangle[i].size() - 1; j++){
                    if(j == 0) triangle[i][j] += triangle[i-1][j];
                    else triangle[i][j] += min(triangle[i-1][j],triangle[i-1][j-1]); //就这里sb的没写else
                }
                triangle[i][triangle[i].size() - 1] += triangle[i-1][triangle[i].size() - 2];           
        }
        int ans = 0x7FFFFF;
        int len = triangle.size();
        for(int i = 0 ; i < triangle[len-1].size() ; i++ ){
       //     cout << "i = " << i<< " "<<triangle[len-1][i] <<endl;
            ans = min(ans , triangle[len-1][i]);
        }
        return ans;
    }
};