Leetcode - House Robber II

Paste_Image.png

My code:

import java.util.Arrays;

public class Solution {
    public int rob(int[] nums) {
        if (nums == null || nums.length == 0)
            return 0;
        else if (nums.length == 1)
            return nums[0];
        return Math.max(rob(nums, 0, nums.length -1), rob(nums, 1, nums.length - 1));
    }
    
    private int rob(int[] nums, int begin, int length) {
        int[] dp = new int[length + 1];
        dp[0] = 0;
        dp[1] = nums[begin];
        for (int i = 2; i < length + 1; i++)
            dp[i] = Math.max(dp[i - 2] + nums[begin + i - 1], dp[i - 1]);
        Arrays.sort(dp);
        return dp[length];
    }
}

My test result:


Paste_Image.png

這道題目依然沒(méi)有做出來(lái)沸呐。崭添。。其實(shí)之前那道題目做出來(lái)后呼渣,這道題目應(yīng)該要做出來(lái)屁置。
但看到DP后,總是沒(méi)有信心蓝角,于是再次沒(méi)做出來(lái)饭冬。
我考慮的問(wèn)題是,怎么把開(kāi)頭和結(jié)尾有沒(méi)有搶辨別出來(lái)呢昌抠?記錄下來(lái)呢患朱?
這應(yīng)該是大多數(shù)人思考的問(wèn)題裁厅。
那么劝评,有沒(méi)有想過(guò)。假設(shè)房子標(biāo)號(hào)0-n
他只有兩種選擇,要么從0開(kāi)始搶?zhuān)瑩尩絥 - 1
要么從1開(kāi)始搶?zhuān)瑩尩絥撞叽。
當(dāng)然插龄,我說(shuō)的從0開(kāi)始搶?zhuān)淮砭椭苯尤?房子均牢。而是代表0在他的考慮范圍內(nèi)才睹。當(dāng)搶到n-1后,即使n可以搶?zhuān)膊粫?huì)去搶了琅攘。
然后再用我剛剛寫(xiě)的函數(shù)。
可以得到兩個(gè)值哨查,取較大的返回就行了剧辐。
還有個(gè)問(wèn)題,如果數(shù)組只有一位荧关,需要特別考慮下。

**
總結(jié): DP
**

Anyway, Good luck, Richardo!

My code:

public class Solution {
    public int rob(int[] nums) {
        if (nums == null || nums.length == 0)
            return 0;
        else if (nums.length == 1)
            return nums[0];
        else if (nums.length == 2)
            return Math.max(nums[0], nums[1]);
        return Math.max(helper(nums, 0, nums.length - 2), helper(nums, 1, nums.length - 1));
    }
    
    private int helper(int[] nums, int begin, int end) {
        int[] dp = new int[end - begin + 1];
        dp[0] = nums[begin];
        dp[1] = Math.max(nums[begin], nums[begin + 1]);
        
        for (int i = begin + 2; i <= end; i++) {
            dp[i - begin] = Math.max(dp[i - begin - 2] + nums[i], dp[i - begin - 1]);
        }
        return dp[end - begin];
    }
}

這道題目腐宋,就是分成兩種情況檀轨,
[0, n - 2]

[1, n - 1]

然后分別找最大。
返回較大者参萄。

Anyway, Good luck, Richardo!

My code:

public class Solution {
    public int rob(int[] nums) {
        if (nums == null || nums.length == 0) {
            return 0;
        }
        else if (nums.length == 1) {
            return nums[0];
        }
        else if (nums.length == 2) {
            return Math.max(nums[0], nums[1]);
        }
        
        int n = nums.length;
        int[] dp1 = new int[n - 1]; // 0 - (n - 2)
        dp1[0] = nums[0];
        dp1[1] = Math.max(nums[0], nums[1]);
        for (int i = 2; i < dp1.length; i++) {
            dp1[i] = Math.max(nums[i] + dp1[i - 2], dp1[i - 1]);
        }
        
        int[] dp2 = new int[n - 1]; // 1 - (n - 1)
        dp2[0] = nums[1];
        dp2[1] = Math.max(nums[1], nums[2]);
        for (int i = 3; i < dp2.length + 1; i++) {
            dp2[i - 1] = Math.max(dp2[i - 3] + nums[i], dp2[i - 2]);
        }
        
        return Math.max(dp1[dp1.length - 1], dp2[dp2.length - 1]);
    }
}

還記得思路校赤。沒(méi)什么好說(shuō)的。

Anyway, Good luck, Richardo! -- 08/25/2016

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末马篮,一起剝皮案震驚了整個(gè)濱河市浑测,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌掷匠,老刑警劉巖,帶你破解...
    沈念sama閱讀 207,248評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件讹语,死亡現(xiàn)場(chǎng)離奇詭異顽决,居然都是意外死亡导匣,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,681評(píng)論 2 381
  • 文/潘曉璐 我一進(jìn)店門(mén)鸠儿,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)厕氨,“玉大人,你說(shuō)我怎么就攤上這事田晚」幔” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 153,443評(píng)論 0 344
  • 文/不壞的土叔 我叫張陵接奈,是天一觀(guān)的道長(zhǎng)通孽。 經(jīng)常有香客問(wèn)我,道長(zhǎng)互捌,這世上最難降的妖魔是什么行剂? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 55,475評(píng)論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮腌巾,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘城菊。我一直安慰自己碉克,他們只是感情好并齐,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,458評(píng)論 5 374
  • 文/花漫 我一把揭開(kāi)白布况褪。 她就那樣靜靜地躺著撕贞,像睡著了一般测垛。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上号涯,一...
    開(kāi)封第一講書(shū)人閱讀 49,185評(píng)論 1 284
  • 那天链快,我揣著相機(jī)與錄音眉尸,去河邊找鬼。 笑死噪猾,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的丝蹭。 我是一名探鬼主播半夷,決...
    沈念sama閱讀 38,451評(píng)論 3 401
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼迅细!你這毒婦竟也來(lái)了巫橄?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 37,112評(píng)論 0 261
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤茵典,失蹤者是張志新(化名)和其女友劉穎湘换,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,609評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡彩倚,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,083評(píng)論 2 325
  • 正文 我和宋清朗相戀三年筹我,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片帆离。...
    茶點(diǎn)故事閱讀 38,163評(píng)論 1 334
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡蔬蕊,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出哥谷,到底是詐尸還是另有隱情岸夯,我是刑警寧澤们妥,帶...
    沈念sama閱讀 33,803評(píng)論 4 323
  • 正文 年R本政府宣布旅赢,位于F島的核電站煮盼,受9級(jí)特大地震影響孕似,放射性物質(zhì)發(fā)生泄漏刮刑。R本人自食惡果不足惜雷绢,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,357評(píng)論 3 307
  • 文/蒙蒙 一蔽氨、第九天 我趴在偏房一處隱蔽的房頂上張望鹉究。 院中可真熱鬧自赔,春花似錦绍妨、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,357評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)允坚。三九已至蛾号,卻和暖如春鲜结,著一層夾襖步出監(jiān)牢的瞬間精刷,已是汗流浹背怒允。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,590評(píng)論 1 261
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留丽惶,地道東北人钾唬。 一個(gè)月前我還...
    沈念sama閱讀 45,636評(píng)論 2 355
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像吟策,于是被迫代替她去往敵國(guó)和親踊挠。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,925評(píng)論 2 344

推薦閱讀更多精彩內(nèi)容

  • My code: My test result: 這道題目是DP。然后我是想了一會(huì)會(huì)兒旺芽,就看答案了辐啄。壶辜。抵怎。碰到DP我...
    Richardo92閱讀 274評(píng)論 0 1
  • **Question: Given a positive integer, return its correspo...
    Richardo92閱讀 5,989評(píng)論 4 3
  • My code: My test result: 從上面那道題目得來(lái)的思路。直接排序姿染,然后遍歷悬赏,記錄次數(shù)舷嗡,如果過(guò)了...
    Richardo92閱讀 460評(píng)論 2 1
  • 你來(lái)自遠(yuǎn)方, 根深蒂固植入大家的心房锐峭, 慢慢的深藏在某個(gè)地方援雇, 你就是天邊的彩虹惫搏, 經(jīng)過(guò)暴雨淋漓的考煉, 最后和陽(yáng)...
    墻角的梅花閱讀 122評(píng)論 0 3
  • 故事的開(kāi)頭總是這樣汰规,適逢其會(huì)控轿,猝不及防。故事的結(jié)局總是這樣冒签,花開(kāi)兩朵萧恕,天各一方票唆。每個(gè)人的青春好似一輛列車(chē)走趋,中途的人...
    穿靴子的貓dagny閱讀 399評(píng)論 3 1