zoukankan      html  css  js  c++  java
  • Triangle

    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.

    Solution: Note that there are n elements in the n-th row (n starts from 1).
    1. DFS. (Time Limit Exceeded for large test data).
    2. DP. Do not need additional spaces (happen in-place).
    3. DP. O(n) space (If the input 'triangle' can not be changed).

    1 class Solution {
    2 public:
    3     int minimumTotal(vector<vector<int> > &triangle) {
    4         for (int i = triangle.size() - 2; i >= 0; --i)
    5             for (int j = 0; j < i + 1; ++j)
    6                 triangle[i][j] = triangle[i][j] + min(triangle[i+1][j], triangle[i+1][j+1]);
    7         return triangle[0][0];
    8     }
    9 };
  • 相关阅读:
    sitemesh包装工具
    关于对XML的处理
    关于打开tomcat的远程调试功能
    hdu4531 乾坤大挪移
    hdu4521 小明序列 (线段树 + DP)
    hdu4527 && hdu4528
    zoj3691 Flower
    pku2817 WordStack
    zoj3652 Maze
    zoj3381 Osaisen Choudai!
  • 原文地址:https://www.cnblogs.com/zhengjiankang/p/3659919.html
Copyright © 2011-2022 走看看