1. 程式人生 > >Leetcode——198. 打家劫舍

Leetcode——198. 打家劫舍

strong 公式 desc solution 動態 rip 大數 -s 遞推

題目描述:題目鏈接

這道題目也是一道動態規劃的題目:

分析一道動態規劃的題目可以將解決問題的思路分為下面三個部分:

1:問題的描述。可以定義數組d[ i ] 用於表示第i -1家可以獲得的最大金額。

2:給出遞推公式:d[ i ] = max( d[i-1] , d[i-2] + nums[i] );

3:給出遞推公式的初始值:d[0] = nums[0], d[1] = max( nums[0] , nums[1] );

下面可以根據上面的思路給出本題的解決思路:

class Solution {
    public int rob(int[] nums) {
        int len = nums.length;
        
if(len == 0){ return 0; } if(len == 1){ return nums[0]; } //定義數組d[i]為i+1家可以獲得的最大數 int[] d = new int[len]; d[0] = nums[0]; d[1] = Math.max(nums[0],nums[1]); if(len == 2){ return d[1]; }
int max = -1; for(int i = 2; i < len ; i++){ d[i] = Math.max(d[i-1],d[i-2]+nums[i]); if(d[i] >= max){ max = d[i]; } } return max; } }

Leetcode——198. 打家劫舍