House Robber
// java
public int rob(int[] nums) {
if (nums.length == 0) return 0;
if (nums.length == 1) return nums[0];
int[] dp = new int[nums.length];
dp[0] = nums[0];
dp[1] = Math.max(nums[0], nums[1]);
for (int i = 2; i < nums.length; ++i) {
dp[i] = Math.max(dp[i - 1], dp[i - 2] + nums[i]);
}
return dp[dp.length - 1];
} // java
public int rob(int[] nums) {
if (nums.length == 0) return 0;
if (nums.length == 1) return nums[0];
int dp0 = nums[0];
int dp1 = Math.max(nums[0], nums[1]);
for (int i = 2; i < nums.length; ++i) {
int curr = Math.max(dp0 + nums[i], dp1);
dp0 = dp1;
dp1 = curr;
}
return dp1;
}