zoukankan      html  css  js  c++  java
  • 【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];
    	}
    };
    

      

  • 相关阅读:
    java spring-mvc + maven + hibernate + mysql 注释
    c# log4net
    c# winform richtextbox 锁屏和滚屏
    socket 客户端
    c# winform插件
    c# 注册全局热键
    c# 请求api获得json数据
    java 把一个文件夹里图片复制到另一个文件夹里
    c# UpdateLayeredWindow异形窗口
    【哈希】身份证问题
  • 原文地址:https://www.cnblogs.com/dragonir/p/6189439.html
Copyright © 2011-2022 走看看