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