我的心好痛,有点可怜自己了,骗子啊。。好伤心。。。。为什么要骗我。
你说,霞染天光,陌上花开与谁享;后来,烟笼柳暗,湖心水动影无双。
dp[i] = Math.max(dp[i-1], dp[i-2] + nums[i]);
public class Solution {
public int rob(int[] nums) {
if (nums.length == 0) return 0;
if (nums.length == 1) return nums[0];
int res = 0;
int prev = nums[0];
int temp = nums[1];
for (int i = 2; i < nums.length; i++) {
int rec = temp;
temp = Math.max(prev + nums[i], temp);
prev = rec;
}
return temp;
}
}
三刷了吧。。。感觉这个题研究好多次了。
一个神奇的思路是。
dp[i % 2]表示今天。
dp[(i-1) % 2]昨天。
dp[(i-2) % 2]前天。。
public class Solution {
public int rob(int[] nums) {
if (nums.length == 0) return 0;
if (nums.length == 1) return nums[0];
if (nums.length == 2) return Math.max(nums[0], nums[1]);
int[] dp = new int[2];
for (int i = 2; i < nums.length; i++) {
int current = dp[(i-2)%2] + nums[i];
int yesterday = dp[(i-1)%2];
dp[i%2] = Math.max(current, yesterday);
}
return dp[(dp.length-1) % 2];
}
}