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

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

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

    IT技術小屋

    秋風秋雨,皆入我心

      BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
      38 隨筆 :: 1 文章 :: 19 評論 :: 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.

    本題本來的想法是用遞歸做,實現代碼如下:
     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 }
    提交之后發現超時,于是考慮到可能是遞歸的開銷問題,考慮用迭代解題。實現如下:
     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 }
    這個解法的核心是從葉節點自底向上構造解空間。
    posted on 2013-12-25 11:31 Meng Lee 閱讀(157) 評論(0)  編輯  收藏 所屬分類: Leetcode
    主站蜘蛛池模板: 色噜噜AV亚洲色一区二区| 亚洲丁香色婷婷综合欲色啪| 国产精品亚洲视频| 久久久久精品国产亚洲AV无码| 成人免费视频一区二区| 777成影片免费观看| 亚洲成aⅴ人片久青草影院| 亚洲尤码不卡AV麻豆| 亚洲精品高清在线| 久久亚洲国产视频| 无码人妻一区二区三区免费看| 国产又大又粗又长免费视频| 成人黄动漫画免费网站视频| 免费看一级做a爰片久久| 亚洲熟妇av一区二区三区| 人禽伦免费交视频播放| 色婷婷六月亚洲婷婷丁香| 亚洲精品无码久久久久A片苍井空| 亚洲精品国产av成拍色拍| 免费国产真实迷j在线观看| 亚洲黄色三级网站| 狼友av永久网站免费观看 | 99久久久国产精品免费牛牛| 57pao一国产成视频永久免费| 国产亚洲精品福利在线无卡一| 韩日电影在线播放免费版| 久久aⅴ免费观看| 亚洲一区二区无码偷拍 | 国产美女无遮挡免费视频网站| 久久亚洲精品人成综合网| 成人毛片免费网站| 三级黄色在线免费观看| 成人在线视频免费| 韩日电影在线播放免费版| 亚洲av极品无码专区在线观看| 色久悠悠婷婷综合在线亚洲| 13一14周岁毛片免费| 亚洲免费无码在线| 蜜臀91精品国产免费观看| 亚在线观看免费视频入口| 免费亚洲视频在线观看|