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];
    	}
    };
    

      

  • 相关阅读:
    YUV图片旋转
    mac http&git代理配置
    iOS 如何保持线程一直在运转
    iOS 后台录音Tweak实现参考--stackoverflow
    NSTimer的精确度
    svn递归添加目录下面所有文件
    利用instruments工具查看其它app的性能
    iOS符号表手工还原
    Hbase的安装测试工作
    Hadoop集群中pig工具的安装过程记录
  • 原文地址:https://www.cnblogs.com/dragonir/p/6189439.html
Copyright © 2011-2022 走看看