• 【leetcode】Triangle (#120)


    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.

    解析:

    本题目的在于给定一个三角形矩阵,求得和最小的路径。每层只能选一个整数,上一层和下一层的整数必须是相邻的。

    思路:

    1. 动态规划: 到第i层的第k个顶点的最小路径长度表示为f(i,j),则:

    f(i,j) = min{f(i,j + 1),f(i + 1, j + 1)}+ (i,j)

    1. 本题主要关心的是空间复杂度不要超过n。
    2. 注意边界条件——每一行中的第一和最后一个元素在上一行中只有一个邻居。而其他中间的元素在上一行中都有两个相邻元素。

    算法实现代码:

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

      

  • 相关阅读:
    JavaScript 技巧
    网页打开客户端本机程序,未安装则提示要求安装
    IIS(World Wide Web Publishing Service)127 无法响应的解决方法
    Jquery hover事件 示例
    JavaScript MVC
    jquery调用基于.NET Framework 3.5的WebService返回JSON数据
    文件下载类
    网页打印局部示例
    未能执行URL(FCK)
    网页中各种宽高
  • 原文地址:https://www.cnblogs.com/dragonir/p/6189439.html
Copyright © 2020-2023  润新知