zoukankan      html  css  js  c++  java
  • LeetCode OJ: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]
    ]

    一开始的题目的意思理解错了 ,以为是位数相差一就是临近的意思,但实际上这里意思是图形上面的那种临近,和原来那个实际上是不一样的。用到了dfs,我一开始还想用一个min的二位vector来保存结果

    但是实际上不用,直接用原来的triangle数组就可以保存结果了:

     1 class Solution {
     2 public:
     3     int minimumTotal(vector<vector<int>>& triangle) {
     4         if(triangle.size() == 0 || triangle[0].size() == 0)
     5             return 0;
     6         //vector<vector<int>>minRet(triangle.size(), vector<int>(triangle[0].size(), 0));
     7         for(int i = 1; i < triangle.size(); ++i){   // i从1开始
     8             for(int j = 0; j < triangle[i].size(); ++j){
     9                 if(j == 0){
    10                     triangle[i][j] += triangle[i - 1][0];
    11                 }else if(j == triangle[i].size() - 1){
    12                     triangle[i][j] += triangle[i - 1][j - 1];
    13                 }else{
    14                     triangle[i][j] += min(triangle[i - 1][j - 1], triangle[i - 1][j]);
    15                 }
    16             }
    17         }
    18         int horSz = triangle.size();
    19         int sz = triangle[horSz - 1].size();
    20         int ret = triangle[horSz - 1][0];
    21         for(int i = 1; i < sz; ++i){
    22             if(ret > triangle[horSz - 1][i])
    23                 ret = triangle[horSz - 1][i];
    24         }
    25         return ret;
    26     }
    27 };

     这个题用java写还是略坑爹,各种get,add写起来感觉好麻烦,暂时就不写了。

  • 相关阅读:
    python-面向对象-类
    python- collections-time-datetime
    python-json-pickle-shelve-random-os-sys-hashlib
    python-递归函数
    python-迭代器
    python-内置函数
    python-易错问题
    python-闭包函数和装饰器
    pytho-函数作用域
    List 拆分集合与 读写XML配置文件
  • 原文地址:https://www.cnblogs.com/-wang-cheng/p/4902556.html
Copyright © 2011-2022 走看看