zoukankan      html  css  js  c++  java
  • Java实现 LeetCode 120 三角形最小路径和

    120. 三角形最小路径和

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

    例如,给定三角形:

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

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

    说明:

    如果你可以只使用 O(n) 的额外空间(n 为三角形的总行数)来解决这个问题,那么你的算法会很加分。

    class Solution {
         public int minimumTotal(List<List<Integer>> triangle) {
            if (triangle == null || triangle.size() == 0){
                return 0;
            }
            // 只需要记录每一层的最小值即可
            int[] dp = new int[triangle.size()+1];
    
            for (int i = triangle.size() - 1; i >= 0; i--) {
                List<Integer> curTr = triangle.get(i);
                for (int j = 0; j < curTr.size(); j++) {
                    //这里的dp[j] 使用的时候默认是上一层的,赋值之后变成当前层
                    dp[j] = Math.min(dp[j],dp[j+1]) + curTr.get(j);
                }
            }
            return dp[0];
        }
    }
    
  • 相关阅读:
    csu1217: 奇数个的那个数
    小试SAS 判别分析
    bfs poj2965
    STL set常用操作
    csu1002 A+B(III)
    HDOJ 1002 的几种方法
    SQL知识积累
    CSV文件格式介绍
    ASP.net Web Form 知识积累
    C# 位域[flags] 枚举
  • 原文地址:https://www.cnblogs.com/a1439775520/p/12946791.html
Copyright © 2011-2022 走看看