LeetCode 题解:120. 三角形最小路径和,动态规划(从上到下),JavaScript,详细注释
原题链接:https://leetcode-cn.com/problems/triangle/
解题思路:
根据题意,
triangle[i][j]
可以从triangle[i - 1][j]
和triangle[i - 1][j - 1]
走来,只需要取两个位置的路径和最小值与triangle[i][j]
想加即可。由于每行的路径和只与结点的值,以及上一行的路径和有关,因此可以复用
triangle
,不用另外开辟空间。动态转移方程:
triangle[i][j] += Math.min(triangle[i - 1][j] + triangle[i - 1][j - 1];
。上一行的值可能为空,此时设置为
Infinity
,避免取最小值失败。所有路径和都在最后一行,需要取最小值。
复制代码
由于每一行的状态,只与上一行有关,也可以用一维数组递推。
复制代码
版权声明: 本文为 InfoQ 作者【Lee Chen】的原创文章。
原文链接:【http://xie.infoq.cn/article/3a00cd28c6f90adeceba687aa】。文章转载请联系作者。
评论