120.三角形最小路徑和
阿新 • • 發佈:2018-12-16
給定一個三角形,找出自頂向下的最小路徑和。每一步只能移動到下一行中相鄰的結點上。
例如,給定三角形:
[ [2], [3,4], [6,5,7], [4,1,8,3] ]
自頂向下的最小路徑和為 11
(即,2 + 3 + 5 + 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]; } };