标题: | |
通过率: | 27.1% |
难度: | 中等 |
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 is 11
(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.动态规划题目,自底向上,最小和一定是每行的最小值,那么从下面开始向上合并,公式就是 res[i][j]=res[i+1][j]+res[i+1][j+1]
公式解释从最后一行开始,每次挑选j 和j+1的较小值加上上一行的j 赋值给j,依次类推
1 public class Solution { 2 public int minimumTotal(List
> triangle) { 3 if(triangle.size()==1)return triangle.get(0).get(0); 4 int [] res=new int[triangle.size()]; 5 for(int i=0;i =0;i--){ 9 for(int j=0;j