[leetcode_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.

Problem Link: https://leetcode.com/problems/triangle/

PS:這里要注意一下"adjacent numbers on the row below"的具體含義肴茄,意思是(從上到下移步)下一個(gè)數(shù)字的行號(hào)是當(dāng)前數(shù)字行號(hào)+1荐捻,且列號(hào) >= 當(dāng)前數(shù)字所在列號(hào)佳遂。例如:triangle[i][j] 只能向 triangle[i+1][j] 和 triangle[i+1][j+1] (在triangle[i+1][...]存在的情況下)移動(dòng)。

class Solution {
    public int minimumTotal(List<List<Integer>> triangle) {
        int n = triangle.size();

        /* 1. 申請(qǐng) (n+1)*(n+1) 維的int數(shù)組,
           因?yàn)槭菑牡紫蛏嫌?jì)算,最后一列res[n]的時(shí)候,將由res[n+1]列數(shù)組計(jì)算得到;
           由于該數(shù)組中每個(gè)元素初始化值都為0枫振,所以不影響結(jié)果。
           2. res[i][j] 表示從triangle[i][j] 到 三角形底部的最小路徑和萤彩。       
        */
        int[][] res = new int[n+1][n+1];

        for (int i = n-1; i >=0 ; i--) {
            for (int j = 0; j <= i; j++) {
                res[i][j] =Math.min(res[i+1][j], res[i+1][j+1]) + triangle.get(i).get(j);
            }
        }
        // 返回值表示從三角形最頂部到最底部的最小路徑和粪滤。
        return res[0][0];
    }
}

該解決方案時(shí)間復(fù)雜度為o(n2);
空間復(fù)雜度也為o(n2)乒疏,其中n為三角形的行數(shù)额衙。

PS: 注意題目有明確說明,如果空間復(fù)雜度實(shí)現(xiàn)為o(n)將是一個(gè)加法點(diǎn)怕吴,那至少說明空間復(fù)雜度為o(n)的方法是存在的窍侧。

class Solution {
    public int minimumTotal(List<List<Integer>> triangle) {
        int n = triangle.size();
        /* 1. 申請(qǐng) (n+1) 維的int數(shù)組,
           因?yàn)槭菑牡紫蛏嫌?jì)算转绷,最后一列res[n]的時(shí)候伟件,將由res[n+1]列數(shù)組計(jì)算得到.
           由于該數(shù)組中每個(gè)元素初始化都為0,所以不影響結(jié)果议经。
           2. res[j] 表示從triangle[i][j] 行到三角形底部的最小路徑和,其中i將從n-1 到 0 進(jìn)行循環(huán)斧账。
           若暫時(shí)不能理解谴返,請(qǐng)先看后續(xù)代碼,在腦海中構(gòu)想過程咧织。
         */
        int[] res = new int[n+1];

        for (int i = n-1; i >=0 ; i--) {
            for (int j = 0; j <= i; j++) {
                res[j] =Math.min(res[j], res[j+1]) + triangle.get(i).get(j);// 想象從最后一列開始遍歷嗓袱,并記錄該點(diǎn)到三角形底部的最小路徑和。
            }
        }
        return res[0];
    }
}

該解決方案時(shí)間復(fù)雜度為o(n2)习绢;
空間復(fù)雜度為o(n)渠抹,其中n為三角形的行數(shù)。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末闪萄,一起剝皮案震驚了整個(gè)濱河市梧却,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌败去,老刑警劉巖放航,帶你破解...
    沈念sama閱讀 211,265評(píng)論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異圆裕,居然都是意外死亡广鳍,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,078評(píng)論 2 385
  • 文/潘曉璐 我一進(jìn)店門葫辐,熙熙樓的掌柜王于貴愁眉苦臉地迎上來搜锰,“玉大人,你說我怎么就攤上這事耿战。” “怎么了焊傅?”我有些...
    開封第一講書人閱讀 156,852評(píng)論 0 347
  • 文/不壞的土叔 我叫張陵剂陡,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我狐胎,道長(zhǎng)鸭栖,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,408評(píng)論 1 283
  • 正文 為了忘掉前任握巢,我火速辦了婚禮晕鹊,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘暴浦。我一直安慰自己溅话,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,445評(píng)論 5 384
  • 文/花漫 我一把揭開白布歌焦。 她就那樣靜靜地躺著飞几,像睡著了一般。 火紅的嫁衣襯著肌膚如雪独撇。 梳的紋絲不亂的頭發(fā)上屑墨,一...
    開封第一講書人閱讀 49,772評(píng)論 1 290
  • 那天躁锁,我揣著相機(jī)與錄音,去河邊找鬼卵史。 笑死战转,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的以躯。 我是一名探鬼主播匣吊,決...
    沈念sama閱讀 38,921評(píng)論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼寸潦!你這毒婦竟也來了色鸳?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,688評(píng)論 0 266
  • 序言:老撾萬榮一對(duì)情侶失蹤见转,失蹤者是張志新(化名)和其女友劉穎命雀,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體斩箫,經(jīng)...
    沈念sama閱讀 44,130評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡吏砂,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,467評(píng)論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了乘客。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片狐血。...
    茶點(diǎn)故事閱讀 38,617評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖易核,靈堂內(nèi)的尸體忽然破棺而出匈织,到底是詐尸還是另有隱情,我是刑警寧澤牡直,帶...
    沈念sama閱讀 34,276評(píng)論 4 329
  • 正文 年R本政府宣布缀匕,位于F島的核電站,受9級(jí)特大地震影響碰逸,放射性物質(zhì)發(fā)生泄漏乡小。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,882評(píng)論 3 312
  • 文/蒙蒙 一饵史、第九天 我趴在偏房一處隱蔽的房頂上張望满钟。 院中可真熱鬧,春花似錦胳喷、人聲如沸湃番。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,740評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽牵辣。三九已至,卻和暖如春奴饮,著一層夾襖步出監(jiān)牢的瞬間纬向,已是汗流浹背择浊。 一陣腳步聲響...
    開封第一講書人閱讀 31,967評(píng)論 1 265
  • 我被黑心中介騙來泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留逾条,地道東北人琢岩。 一個(gè)月前我還...
    沈念sama閱讀 46,315評(píng)論 2 360
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像师脂,于是被迫代替她去往敵國(guó)和親担孔。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,486評(píng)論 2 348