【LeetCode】打家劫舍

題目

題目

思路 - 動態(tài)規(guī)劃

  • 只有一間房間,偷竊該房屋

  • 只有兩間房間,偷竊其中金額較高的房屋

  • 大于兩間,對于第k間房屋,有兩個選項:

    1. 偷竊第k間房屋,那么就不能偷竊第k - 1間房屋,偷竊總金額為前k - 2間房屋的最高總金額與第k間房屋的金額之和
    2. 不能偷竊第k間房屋,偷竊總金額為前k - 1間房屋的最高總金額

    在這兩個選項中偷竊總金額較大的選項,即為前k間房屋能偷竊的最高總金額

    狀態(tài)轉(zhuǎn)移方程:
    狀態(tài)轉(zhuǎn)移方程

    邊界條件:
    邊界條件

實現(xiàn)

class Solution {
  public int rob(int[] nums) {
    if (nums == null || nums.length == 0) {
      return 0;
    }
    int length = nums.length;
    if (length == 1) {
      return nums[0];
    }
    int[] dp = new int[length];
    dp[0] = nums[0];
    dp[1] = Math.max(nums[0], nums[1]);
    for (int i = 2; i < length; i++) {
      dp[i] = Math.max(dp[i - 2] + nums[i], dp[i - 1]);
    }
    return dp[length - 1];
  }
}
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容