1. 程式人生 > >120.三角形最小路徑和

120.三角形最小路徑和

給定一個三角形,找出自頂向下的最小路徑和。每一步只能移動到下一行中相鄰的結點上。

例如,給定三角形:

[
     [2],
    [3,4],
   [6,5,7],
  [4,1,8,3]
]

自頂向下的最小路徑和為 11(即,3 + 1 = 11)。

說明:

如果你可以只使用 O(n) 的額外空間(n 為三角形的總行數)來解決這個問題,那麼你的演算法會很加分。

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