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], [], [, 7], [,]
The minimum path sum from top to bottom is11
(I. e., 2 + 3 + 5 + 1 = 11 ).
Note:
Bonus point if you are able to do this using onlyO(N) Extra space, whereNIs the total number of rows in the triangle.
Class Solution {public: int minimumTotal (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], f [j-1]) + triangle [I] [j];} int m = INT_MAX; for (int I = 0; I <f. size (); I ++) {m = min (m, f [I]) ;}return m ;}};
Triangle