Try   HackMD

【LeetCode】 120. Triangle

Description

Given a triangle, find the minimum path sum from top to bottom. Each step you may move to adjacent numbers on the row below.
Note:
Bonus point if you are able to do this using only O(n) extra space, where n is the total number of rows in the triangle.

給一三角形,找到一條從上到下最小總和的路徑,回傳總和值。
注意:
額外的挑戰:你只能使用O(n)的空間複雜度,n代表三角形的高度。

Example:

For example, given the following triangle

[
     [2],
    [3,4],
   [6,5,7],
  [4,1,8,3]
]
The minimum path sum from top to bottom is 11 (i.e., 2 + 3 + 5 + 1 = 11).

Solution

  • 從三角形的底部往上跑,讓每個數字去加自己下面兩個數字之中比較小的。一路加到頂端,頂端就是答案。

Code

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