<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    IT技術(shù)小屋

    秋風(fēng)秋雨,皆入我心

      BlogJava :: 首頁(yè) :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理 ::
      38 隨筆 :: 1 文章 :: 19 評(píng)論 :: 0 Trackbacks
    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.

    本題本來(lái)的想法是用遞歸做,實(shí)現(xiàn)代碼如下:
     1 public class Solution {
     2     public int minimumTotal(ArrayList<ArrayList<Integer>> triangle) {
     3         int row = triangle.size();
     4         return findMinPath(triangle, 0, 0, row);
     5     }
     6 
     7     private int findMinPath(ArrayList<ArrayList<Integer>> triangle, int row,
     8             int col, int totalRow) {
     9         if (row == totalRow - 1) {
    10             return triangle.get(row).get(col);
    11         } else {
    12             return triangle.get(row).get(col) + Math.min(findMinPath(triangle, row + 1, col, totalRow), findMinPath(triangle, row + 1, col + 1, totalRow));
    13         }
    14     }
    15 }
    提交之后發(fā)現(xiàn)超時(shí),于是考慮到可能是遞歸的開(kāi)銷問(wèn)題,考慮用迭代解題。實(shí)現(xiàn)如下:
     1 public class Triangle {
     2     public int minimumTotal(ArrayList<ArrayList<Integer>> triangle) {
     3         int n = triangle.size() - 1;
     4         int[] path = new int[triangle.size()];
     5         for (int o = 0; o < triangle.get(n).size(); o++) {
     6             path[o] = triangle.get(n).get(o);
     7         }
     8         for (int i = triangle.size() - 2; i >= 0; i--) {
     9             for (int j = 0, t = 0; j < triangle.get(i + 1).size() - 1; j++, t++) {
    10                 path[t] = triangle.get(i).get(t)
    11                         + Math.min(path[j], path[j + 1]);
    12             }
    13         }
    14         return path[0];
    15     }
    16 }
    這個(gè)解法的核心是從葉節(jié)點(diǎn)自底向上構(gòu)造解空間。
    posted on 2013-12-25 11:31 Meng Lee 閱讀(157) 評(píng)論(0)  編輯  收藏 所屬分類: Leetcode
    主站蜘蛛池模板: 国产伦精品一区二区三区免费下载| 亚洲午夜无码AV毛片久久| 亚洲理论片中文字幕电影| 国产一级a毛一级a看免费视频| 337p日本欧洲亚洲大胆色噜噜| 日韩免费福利视频| A片在线免费观看| 91丁香亚洲综合社区| 亚洲人成色7777在线观看不卡| 黄色免费在线网站| 国产精品久久久久久亚洲影视| 亚洲精品午夜无码电影网| 操美女视频免费网站| 伊人久久大香线蕉免费视频| 在线观看亚洲AV日韩A∨| 亚洲精品乱码久久久久久| 国产精品成人免费视频网站京东| 2022免费国产精品福利在线| 亚洲 欧洲 日韩 综合在线| 亚洲熟妇无码八AV在线播放| 成人免费视频一区| 99久久99久久精品免费观看 | 日韩电影免费在线观看网站| 亚洲制服在线观看| 国产成人精品日本亚洲网站| 国产又黄又爽又猛的免费视频播放 | 91福利视频免费观看| 无码人妻一区二区三区免费视频| 亚洲综合网美国十次| 中文字幕亚洲图片| 免费观看的av毛片的网站| 精品无码无人网站免费视频 | 日韩插啊免费视频在线观看| 一区二区视频免费观看| 亚洲欧美日韩国产精品一区| 亚洲精品第五页中文字幕| 亚洲线精品一区二区三区| 国产小视频免费观看| 毛片免费观看视频| 国产在线观看麻豆91精品免费| 免费的全黄一级录像带|