House Robber II
Thoughts
Code
class Solution {
private int rob(int[] nums, int start, int end) {
int[] f = new int[3];
f[start % 3] = nums[start];
f[(start + 1) % 3] = Math.max(f[start % 3], nums[start + 1]);
for (int i = start + 2; i <= end; i++) {
f[i % 3] = Math.max(f[(i - 1) % 3], f[(i - 2) % 3] + nums[i]);
}
return f[end % 3];
}
public int rob(int[] nums) {
if (nums.length == 0) {
return 0;
} else if (nums.length == 1) {
return nums[0];
} else if (nums.length == 2) {
return Math.max(nums[0], nums[1]);
}
return Math.max(rob(nums, 0, nums.length - 2), rob(nums, 1, nums.length - 1));
}
}Analysis
Last updated