120. 三角形最小路径和

给定一个三角形,找出自顶向下的最小路径和。每一步只能移动到下一行中相邻的结点上。

例如,给定三角形:

[
     [2],
    [3,4],
   [6,5,7],
  [4,1,8,3]
]

自顶向下的最小路径和为 11(即,2 + 3 + 5 + 1 = 11)。

class Solution {
    public int minimumTotal(List<List<Integer>> trian) {
        int n = trian.get(trian.size() - 1).size();
        int[][] dp = new int[n + 1][n + 1];
        for(int i = n - 1;i >= 0;i--){
            List<Integer> list = trian.get(i);
            for(int j = 0;j < list.size();j++){
                dp[i][j] = Math.min(dp[i + 1][j],dp[i + 1][j + 1]) + list.get(j);
            }
        }
        return dp[0][0];
    }
}

 

posted @ 2020-04-12 19:59  海绵爱上星  阅读(106)  评论(0编辑  收藏  举报