【LeetCode】 27 三角形最小路径和
< 返回列表时间: 2020-05-26来源:OSCHINA
题目
给定一个三角形,找出自顶向下的最小路径和。每一步只能移动到下一行中相邻的结点上。
相邻的结点 在这里指的是 下标 与 上一层结点下标 相同或者等于 上一层结点下标 + 1 的两个结点。
例如,给定三角形: [ [2], [3,4], [6,5,7], [4,1,8,3] ]
自顶向下的最小路径和为 11 (即, 2 + 3 + 5 + 1 = 11)。
说明:
如果你可以只使用 O ( n ) 的额外空间( n 为三角形的总行数)来解决这个问题,那么你的算法会很加分。
思路
https://leetcode-cn.com/problems/triangle/solution/javadong-tai-gui-hua-si-lu-yi-ji-dai-ma-shi-xian-b/
代码 public int minimumTotal(List<List<Integer>> triangle) { // 特判 if (triangle == null || triangle.size() == 0) { return 0; } // dp中记录了求第i行时,第i+1的最小路径和 int[] dp = new int[triangle.size() + 1]; for (int i = triangle.size() - 1; i >= 0; i--) { List<Integer> rows = triangle.get(i); for (int j = 0; j < rows.size(); j++) { dp[j] = Math.min(dp[j], dp[j + 1]) + rows.get(j); } } return dp[0]; }
热门排行