Leetcode053--找到分支最小路径和
Posted 劲火星空
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Leetcode053--找到分支最小路径和相关的知识,希望对你有一定的参考价值。
一、原题
Given a triangle, find the minimum path sum from top to bottom. Each step you may move to adjacent numbers on the row below.
For example, given the following triangle
[
[2],
[3,4],
[6,5,7],
[4,1,8,3]
]
The minimum path sum from top to bottom is11(i.e., 2 + 3 + 5 + 1 = 11).
Note:
Bonus point if you are able to do this using only O(n) extra space, where n is the total number of rows in the triangle.
二、中文
求最小值,从上到下的分支可以任意选择
三、举例
四、思路
还是动态规划的思想,只不过这次是从下往上开始的,使用的是二维数组
五、程序
import java.util.*;
public class Solution
public int minimumTotal(ArrayList<ArrayList<Integer>> triangle)
//也是通过动态规划的方式
int row = triangle.size();
int col = triangle.get(row-1).size();
int d[][] = new int[row][col];
//先将最后一行填满
for(int i = 0; i < col; i++)
d[row-1][i] = triangle.get(row-1).get(i);
//从下往上选取最小的依次填充
for(int i = row-2; i >= 0; i--)
//获得一行
ArrayList<Integer> l = triangle.get(i);
for(int j = 0;j<l.size();j++)
d[i][j] = l.get(j) + Math.min(d[i+1][j], d[i+1][j+1]);
return d[0][0];
以上是关于Leetcode053--找到分支最小路径和的主要内容,如果未能解决你的问题,请参考以下文章