LeetCode算法訓(xùn)練-動態(tài)規(guī)劃

歡迎關(guān)注個人公眾號:愛喝可可牛奶

LeetCode算法訓(xùn)練-動態(tài)規(guī)劃

理論知識

動態(tài)規(guī)劃當(dāng)前狀態(tài)是由前一個狀態(tài)推導(dǎo)出來的,而貪心沒有狀態(tài)的轉(zhuǎn)移

動態(tài)規(guī)劃需要借助dp數(shù)組桥爽,可能是一維也可能是二維的

  1. 首先要明確dp數(shù)組是用來干什么的纳击,下標(biāo)對應(yīng)什么
  2. 狀態(tài)如何轉(zhuǎn)移 续扔? 也就是理清遞推公式
  3. dp數(shù)組如何初始化
  4. 如何遍歷
  5. 舉個栗子模擬推導(dǎo)一遍

LeetCode 509. 斐波那契數(shù)

分析

F(n) = F(n - 1) + F(n - 2),其中 n > 1

代碼

class Solution {
    public int fib(int n) {
        if (n <= 1) return n;             
        int[] dp = new int[n + 1];
        dp[0] = 0;
        dp[1] = 1;
        for (int index = 2; index <= n; index++){
            dp[index] = dp[index - 1] + dp[index - 2];
        }
        return dp[n];
    }
}

LeetCode 70. 爬樓梯

分析

錯誤 沒有理清遞推函數(shù)

class Solution {
    public int climbStairs(int n) {
        int[] dp = new int[n+1];
        dp[1] = 1;
        dp[2] = 2;
        for(int i = 3; i <= n; i++){
            dp[i] = dp[i-1] + dp[i-2]+2;
        }
        return dp[n];
    }
}

dp[i]表示到當(dāng)前樓梯有多少種跳法焕数,從這里可以往后跳一步或者兩步纱昧,這樣就建立了前后階梯的關(guān)系,但是不能跳2個一步

<u>當(dāng)前階梯跳數(shù)能由前一個階梯跳一步或前兩個階梯跳兩步得到</u>

代碼

class Solution {
    public int climbStairs(int n) {
        if(n == 1){
            return 1;
        }
        int[] dp = new int[n+1];
        dp[1] = 1;
        dp[2] = 2;
        for(int i = 3; i <= n; i++){
            dp[i] = dp[i-1] + dp[i-2];
        }
        return dp[n];
    }
}

LeetCode 746. 使用最小花費爬樓梯

整數(shù)數(shù)組 cost 堡赔,cost[i] 是從樓梯第 i 個臺階向上爬需要支付的費用砌些。一旦支付此費用,即可選擇向上爬一個或者兩個臺階。

你可以選擇從下標(biāo)為 0 或下標(biāo)為 1 的臺階開始爬樓梯存璃。

請你計算并返回達到樓梯頂部的最低花費仑荐。

分析

根據(jù)測試用例能夠得出臺階頂部在哪里,cost[i] :從下標(biāo)i-1爬一步纵东,從i-2爬兩步到臺階頂部

dp[i]表示爬到第i個臺階的最小花費粘招,

狀態(tài)轉(zhuǎn)移:dp[i] = Math.min(dp[i-1]+cost[i-1], dp[i-2]+cost[i-2])

代碼

class Solution {
    public int minCostClimbingStairs(int[] cost) {
        int len = cost.length;
        int[] dp = new int[len+1];
        // 初始化
        dp[0] = 0;
        dp[1] = 0;
        for(int i = 2; i <= len; i++){
            dp[i] = Math.min(dp[i-1]+cost[i-1], dp[i-2]+cost[i-2]);
        }
        return dp[len];
    }
}

總結(jié)

  1. 搞清楚dp數(shù)組含義以及對應(yīng)下標(biāo)反映了什么狀態(tài)
  2. 弄清楚轉(zhuǎn)移公式
  3. 初始化
  4. 確定遍歷順序(這個和轉(zhuǎn)移公式緊密相關(guān))
  5. 模擬一下
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市偎球,隨后出現(xiàn)的幾起案子洒扎,更是在濱河造成了極大的恐慌,老刑警劉巖衰絮,帶你破解...
    沈念sama閱讀 212,542評論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件袍冷,死亡現(xiàn)場離奇詭異,居然都是意外死亡猫牡,警方通過查閱死者的電腦和手機胡诗,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,596評論 3 385
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來淌友,“玉大人煌恢,你說我怎么就攤上這事≌鹜ィ” “怎么了瑰抵?”我有些...
    開封第一講書人閱讀 158,021評論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長器联。 經(jīng)常有香客問我二汛,道長,這世上最難降的妖魔是什么拨拓? 我笑而不...
    開封第一講書人閱讀 56,682評論 1 284
  • 正文 為了忘掉前任肴颊,我火速辦了婚禮,結(jié)果婚禮上千元,老公的妹妹穿的比我還像新娘苫昌。我一直安慰自己颤绕,他們只是感情好幸海,可當(dāng)我...
    茶點故事閱讀 65,792評論 6 386
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著奥务,像睡著了一般物独。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上氯葬,一...
    開封第一講書人閱讀 49,985評論 1 291
  • 那天挡篓,我揣著相機與錄音,去河邊找鬼。 笑死官研,一個胖子當(dāng)著我的面吹牛秽澳,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播戏羽,決...
    沈念sama閱讀 39,107評論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼担神,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了始花?” 一聲冷哼從身側(cè)響起妄讯,我...
    開封第一講書人閱讀 37,845評論 0 268
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎酷宵,沒想到半個月后亥贸,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,299評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡浇垦,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,612評論 2 327
  • 正文 我和宋清朗相戀三年炕置,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片溜族。...
    茶點故事閱讀 38,747評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡讹俊,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出煌抒,到底是詐尸還是另有隱情仍劈,我是刑警寧澤,帶...
    沈念sama閱讀 34,441評論 4 333
  • 正文 年R本政府宣布寡壮,位于F島的核電站贩疙,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏况既。R本人自食惡果不足惜这溅,卻給世界環(huán)境...
    茶點故事閱讀 40,072評論 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望棒仍。 院中可真熱鬧悲靴,春花似錦、人聲如沸莫其。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,828評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽乱陡。三九已至浇揩,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間憨颠,已是汗流浹背胳徽。 一陣腳步聲響...
    開封第一講書人閱讀 32,069評論 1 267
  • 我被黑心中介騙來泰國打工积锅, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人养盗。 一個月前我還...
    沈念sama閱讀 46,545評論 2 362
  • 正文 我出身青樓缚陷,卻偏偏與公主長得像,于是被迫代替她去往敵國和親往核。 傳聞我的和親對象是個殘疾皇子蹬跃,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,658評論 2 350

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