Title:

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],
    [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).

 

思路:开始以为是贪心,其实并不是,是动态规划。倒过来想,从底向上,转移方程 f[i][j] += min(f[i+1][j],f[i+1][j+1]). 空间复杂度O(1)

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];
    }
};

 

相关文章:

  • 2022-01-18
  • 2021-11-25
  • 2022-12-23
  • 2022-12-23
  • 2021-08-17
  • 2022-12-23
  • 2022-12-23
猜你喜欢
  • 2022-01-02
  • 2021-07-09
  • 2022-03-02
  • 2022-01-31
  • 2021-08-02
  • 2021-12-22
  • 2022-03-07
相关资源
相似解决方案