zoukankan      html  css  js  c++  java
  • LeetCode120. 三角形最小路径和

    【举一反三】:最大路径和——数字三角形问题(动态规划)

    ☆☆☆思路:动态规划  ——> 空间优化(使用一维数组而不是二维数组,这样只使用了O(n)的额外空间。)

    class Solution {
        public int minimumTotal(List<List<Integer>> triangle) {
            /**
             *  方法1:DP   时间复杂度和空间复杂度 都是O(n^2)
             */
            /*
            int m = triangle.size();
            // 1. 状态的定义:dp[i][j]表示从点(i,j)到底边的最小路径和
            int[][] dp = new int[m + 1][m + 1];
            // 从三角形的最后一行开始递推。
            for (int i = m - 1; i >= 0; i--) {
                for (int j = 0; j <= i; j++) {
                    // 2. 状态转移方程
                    dp[i][j] = Math.min(dp[i+1][j], dp[i+1][j+1]) + triangle.get(i).get(j);
                }
            }
            return dp[0][0];
            */
            /**
             * 方法2:DP + 空间优化, 仅使用一维数组. 时间复杂度O(n^2),空间复杂度O(n)
             *      由于递推中,计算dp[i][j]时,只用到了下一行的dp[i+1][j]和dp[i+1][j+1]。
             *      而不需要记录整个层的结果,因此dp数组不需要定义N行,只需要一行即可。
             */
            int m = triangle.size();
            int[] dp = new int[m + 1];
            for (int i = m-1; i >= 0; i--) {
                for (int j = 0; j <= i; j++) {
                    dp[j] = Math.min(dp[j], dp[j+1]) + triangle.get(i).get(j);
                }
            }
            return dp[0];
        }
    }
  • 相关阅读:
    MySQL数据库索引相关
    springMVC架构说明
    @responseBody注解的使用
    springMVC配置
    17_10_31 ./ ../ / ~/
    Nginx的简单操作
    MySQL中sql语句的优化
    Mac下Redis的简单操作
    github下载与安装(windows版)
    结合工程实践选题调研分析3个同类软件产品
  • 原文地址:https://www.cnblogs.com/HuangYJ/p/14213728.html
Copyright © 2011-2022 走看看