思路:自底向上求解,从倒数第二行开始,本行节点到最后一行的最小路径和等于该节点的数据加上下面左右两个数据中最小的一个。不使用额外空间,直接将最小路径和存储到原有的数组中。1 int minimumTotal(vector<vector<int>> &triangle) { 2 // write your code here 3 for (int i = triangle.size() - 2; i >= 0; i--) { 4 for (int j = 0; j < triangle[i].size(); j++) { 5 triangle[i][j] = min(triangle[i+1][j], triangle[i+1][j+1]) + triangle[i][j]; 6 } 7 } 8 return triangle[0][0]; 9 }
时间: 2024-10-24 11:38:08