zoukankan      html  css  js  c++  java
  • Triangle——LeetCode

    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.

    这个题跟之前的这道题几乎是一样的。之前做的用的二维数组保存的,其实由底向上计算,只需要一维数组即可。

        public int minimumTotal(List<List<Integer>> triangle) {
            if(triangle==null||triangle.size()==0){
                return 0;
            }
            if(triangle.size()==1){
                return triangle.get(0).get(0);
            }
            int[] res = new int[triangle.size()];
            for(int i=0;i<triangle.size();i++){
                res[i]=triangle.get(triangle.size()-1).get(i);
            }
            for(int i=triangle.size()-2;i>=0;i--){
                List<Integer> row = triangle.get(i);
                for(int j = 0;j<row.size();j++){
                    res[j]=Math.min(res[j],res[j+1])+row.get(j);
                }
            }
            return res[0];
        }
  • 相关阅读:
    100LS练习方法
    甲方开源项目
    linux端口转发方式
    内网的一些穿透工具
    Checkpoint防火墙(一)
    2020目标
    Linux逻辑卷的扩容和缩小
    linux挂载磁盘
    Selinux介绍
    以太坊私链搭建
  • 原文地址:https://www.cnblogs.com/aboutblank/p/4409921.html
Copyright © 2011-2022 走看看