题目链接
取下标不相邻的数字。
class Solution {
// 迭代 。。 优化,可以将两个数字来存,降低空间复杂度
public int rob(int[] nums) {
if(nums.length == 1) return nums[0];
int[] arr = new int[nums.length];
arr[0] = nums[0];
arr[1] = Math.max(nums[0],nums[1]);
for(int i = 2; i < nums.length; i++) {
arr[i] = Math.max(arr[i-1], arr[i-2]+nums[i]);
}
return arr[nums.length-1];
}
// 递归。超时
public int rob(int[] nums) {
return resursion(nums.length-1, nums);
}
public int resursion(int index, int[] arr) {
if(index < 0) return 0;
if(index == 0) return arr[0];
return Math.max(resursion(index-1,arr), resursion(index-2,arr)+arr[index]);
}
}