House-Robber-series
0x0 题目详情
0x1 解题思路
0x2 代码实现
class Solution {
public int rob(int[] nums) {
if(nums==null || nums.length==0){
return 0;
}
if(nums.length<2){
return nums[0];
}
return Math.max(calc(0,nums.length-1,nums),calc(1,nums.length,nums));
}
//左闭右开
private int calc(int left,int right,int[] nums){
int[][] dp=new int[nums.length][2];
//1表示偷
dp[left][1]=nums[left];
for(int i=left+1;i<right;i++){
dp[i][0]=Math.max(dp[i-1][0],dp[i-1][1]);
dp[i][1]=nums[i]+dp[i-1][0];
}
return Math.max(dp[right-1][0],dp[right-1][1]);
}
}0x3 课后总结
Last updated