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.

    算法:首先想到的是DFS,但是超时了代码如下:

    class Solution {
    public:
        int  result;
        int minimumTotal(vector<vector<int> > &triangle) {
            result=0;
            doit(triangle,0,0,0);
            return result;
        }
        void doit(vector<vector<int>>  &triangle,int level,int key,int sum)
        {
            if(level==triangle.size())
            {
               if(sum>result)  result=sum;   
            }
            if(level<triangle.size()-1)
            {
               doit(triangle,level+1,key,sum+triangle[level][key]);
               doit(triangle,level+1,key+1,sum+triangle[level][key]);
            }
        }
    };
    

      在网上查到的动态规划算法,从下到上,要求第i层到最底层路径的最小和,只要知道i+1层到最底层的最小路径和,代码如下:

    class Solution {
    public:
        int minimumTotal(vector<vector<int> > &triangle) {
        
            int len=triangle.size();
            if(len==0)  return -1;
            if(triangle[len-1].size()!=len)  return -1;
            int *temp=new int[len];
            for(int i=0;i<len;i++)
            {
                temp[i]=triangle[len-1][i];
            }
            for(int i=len-2;i>=0;i--)
            {
                for(int j=0;j<=i;j++)
                {
                    temp[j]=triangle[i][j]+min(temp[j],temp[j+1]);
                }
            }
            return temp[0];
        }
       
    };
    

      

  • 相关阅读:
    java中的HMAC-SHA1加密
    java拦截处理System.exit(0)
    使用canal分析binlog(二) canal源码分析
    JS的异步世界
    socket.io的用户认证
    一个补零小函数
    使用gulp在开发过程中合理导出zip文件
    使用r.js进行前端repuirejs的合并压缩
    使用r2d3的注意事项
    三列自适应布局的实现方式(兼容IE6+)
  • 原文地址:https://www.cnblogs.com/sqxw/p/4001010.html
Copyright © 2011-2022 走看看