0%

triangle

题目描述

给定一个三角形,找出自顶向下的最小路径和。每一步只能移动到下一行中相邻的结点上。

说明:

如果你可以只使用 O(n) 的额外空间(n 为三角形的总行数)来解决这个问题,那么你的算法会很加分。

题解

自底向上动态规划,类似于求最短路径。↙或者↘方向两种选择

居然有直接在triangle上操作的!不过确实省了不少事。

1
2
3
4
5
6
7
8
int minimumTotal(vector<vector<int>>& triangle) {
int high = triangle.size();
if (!high)return 0;
for (int i = high - 2; i >= 0; i--)
for (int j = 0; j<triangle[i].size(); j++)
triangle[i][j] += min(triangle[i + 1][j + 1], triangle[i + 1][j]);
return triangle[0][0];
}