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

    Q:
    给出一个三角形,计算从三角形顶部到底部的最小路径和,每一步都可以移动到下面一行相邻的数字,
    例如,给出的三角形如下:
    [↵ [2],↵ [3,4],↵ [6,5,7],↵ [4,1,8,3]↵]
    最小的从顶部到底部的路径和是2 + 3 + 5 + 1 = 11。
    注意:
    如果你能只用O(N)的额外的空间来完成这项工作的话,就可以得到附加分,其中N是三角形中的行总数。
    A:
    min数组,复用一个长度triangle.size()大小的数组记录
    上一层元素的构成的小三角的最小路径和,状态转移方程
    f(i,j) = min(f(i+1, j)+triangle[i][j], f(i+1, j+1)+triangle[i][j])

        public int minimumTotal(ArrayList<ArrayList<Integer>> triangle) {
            if (triangle.isEmpty())
                return 0;
            int[] min = new int[triangle.size()];
            for (int i = 0; i < min.length; i++) {
                min[i] = triangle.get(triangle.size() - 1).get(i);
            }
            for (int i = triangle.size() - 2; i >= 0; i--) {
                for (int j = 0; j <= i; j++) {
                    min[j] = Math.min(min[j] + triangle.get(i).get(j), min[j + 1] + triangle.get(i).get(j));
                }
            }
            return min[0];
        }
    
  • 相关阅读:
    Orcad Pspice仿真
    AD导入Allegro brd文件(导入后找不到PCB的解决方法)
    VJTAG转VME DTB
    win10 非Unicode应用程序显示设置
    MFC多文档视图编程总结
    VC MFC开发示例下载
    FPGA仿真及时序约束分析
    VMWARE Thin APP
    VPX技术基础概论
    SecureCRT脚本(VBS)运行
  • 原文地址:https://www.cnblogs.com/xym4869/p/12517753.html
Copyright © 2011-2022 走看看