2
public int rob(int[] nums) {3
if (nums.length == 1) {6
int[] t = new int[nums.length];7
for (int i = 0; i < t.length; i++) {10
int[] k = new int[nums.length];11
for (int i = 0; i < k.length; i++) {14
return Math.max(helper(nums, 0, 0, t), helper(nums, 1, 1, k));17
static int helper(int[] nums, int i, int start, int[] t) {18
if (start == 0 && i == nums.length - 2) {21
if (start == 1 && i == nums.length - 1) {24
if (start == 0 && i >= nums.length - 1) {27
if (start == 1 && i >= nums.length) {33
int pick = nums[i] + helper(nums, i + 2, start, t);34
int notpick = helper(nums, i + 1, start, t);35
t[i] = Math.max(pick, notpick);