打家劫舍
参考代码随想录,很简单的动规
注意dp[1]的初始化,和递推公式
class Solution {
public int rob(int[] nums) {
//本题目用动规,注意五步走,dp含义,递推公式,初始化,遍历顺序,打印
//注意剪枝
if(nums ==null || nums.length == 0){return 0;}
if (nums.length == 1) return nums[0];
int n = nums.length;
int dp[] =new int[n];
dp[0]=nums[0];
dp[1]=Math.max(nums[0],nums[1]);
//这里的dp[i]指的是i位置和之前包里能装下的最大的金额
for(int i=2;i<n;i++){
dp[i]=Math.max(dp[i-2]+nums[i],dp[i-1]);
}
return dp[n-1];
}
}