公司网站域名及空间,便捷网站建设报价,上海公共招聘网官网下载,用什么软件搭建网站源码题目
给定一个三角形 triangle #xff0c;找出自顶向下的最小路径和。
每一步只能移动到下一行中相邻的结点上。相邻的结点 在这里指的是 下标 与 上一层结点下标 相同或者等于 上一层结点下标 1 的两个结点。也就是说#xff0c;如果正位于当前行的下标 i #xff0c;那…题目
给定一个三角形 triangle 找出自顶向下的最小路径和。
每一步只能移动到下一行中相邻的结点上。相邻的结点 在这里指的是 下标 与 上一层结点下标 相同或者等于 上一层结点下标 1 的两个结点。也就是说如果正位于当前行的下标 i 那么下一步可以移动到下一行的下标 i 或 i 1 。
示例 1
输入triangle [[2],[3,4],[6,5,7],[4,1,8,3]] 输出11 解释如下面简图所示 2 3 4 6 5 7 4 1 8 3 自顶向下的最小路径和为 11即2 3 5 1 11。
解
class Solution {public int minimumTotal(ListListInteger triangle) {int n triangle.size();int[][] dp new int[n][n];dp[0][0] triangle.get(0).get(0);for (int i 1; i n; i) {for (int j 0; j i; j) {if (j 0) {dp[i][0] dp[i - 1][0] triangle.get(i).get(0);} else if (i j) {dp[i][j] dp[i - 1][j - 1] triangle.get(i).get(j);} else {dp[i][j] Math.min(dp[i - 1][j - 1], dp[i - 1][j]) triangle.get(i).get(j);}}}int min Integer.MAX_VALUE;for (int i 0; i n; i) {min Math.min(min, dp[n - 1][i]);}return min;}
}