House robber II
class Solution {
public int rob(int[] nums) {
if(nums.length <= 1) return nums.length == 0 ? 0 : nums[0];
if(nums.length == 2) return Math.max(nums[0],nums[1]);
return Math.max(rob(nums,0,nums.length-1),rob(nums,1,nums.length));
}
public int rob(int[] nums,int start, int end){
long first = nums[start];//2
long second = Math.max(nums[start],nums[start+1]);//3
long max = Math.max(first,second);//3
for(int i = start+2; i < end ;i++){
max = Math.max(nums[i]+first,second);
first = second;
second = max;
}
return (int)max;
}
}
Last updated