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

      

  • 相关阅读:
    start with connect by prior 递归查询用法(二)
    start with connect by prior 递归查询用法(一)
    oracle之spool详细使用总结
    关于ETL面试相关
    ETL常用的三种工具介绍及对比Datastage,Informatica和Kettle
    Oracle执行计划详解
    随机函数的使用(DBMS_RANDOM)
    oracle中的替换函数replace和translate函数
    ces
    文章11
  • 原文地址:https://www.cnblogs.com/dragonir/p/6189439.html
Copyright © 2011-2022 走看看