题目:https://leetcode-cn.com/problems/house-robber/
答案:动态规划
class Solution {
public int rob(int[] nums) {
if(nums==null || nums.length==0) return 0;
if(nums.length==1) return nums[0];
if(nums.length==2) return Math.max(nums[0],nums[1]);
int[] results = new int[nums.length];
results[0] = nums[0];
results[1] = Math.max(nums[0],nums[1]);
for(int i=2;i<nums.length;i++){
results[i] = Math.max(results[i-2]+nums[i],results[i-1]);
}
return results[nums.length-1];
}
}
简写:
public int rob(int[] nums) {
int before = 0, result = 0;
for (int num : nums) {
result = Math.max(num + before, before = result);
}
return result;
}