解题思路:
dp 当前房间可以选择偷与不偷两种情况,记录能偷到的最大值,得出状态方程dp[i]=max(dp[i-2]+nums[i],dp[i-1]);
/**
* @param {number[]} nums
* @return {number}
*/
// var rob = function(nums) {
// if(nums.length <= 1) return nums[0];
// if(nums.length === 2) return Math.max(nums[1], nums[0]);
// let dp =new Array(105).fill(0);
// dp[0] = nums[0];
// dp[1] = Math.max(nums[1],nums[0]);
// for(let i = 2; i <nums.length; i++ ) {
// dp[i] = Math.max(dp[i-2] + nums[i], dp[i-1])
// }
// return dp[nums.length-1];
// };
//滚动数组进行空间压缩
var rob = function(nums) {
let first = nums[0], second = Math.max(nums[0], nums[1]);
if(nums.length <= 1) return first;
if(nums.length === 2) return second;
for(let i = 2; i <nums.length; i++ ) {
let temp = second;
second = Math.max(first + nums[i], second);
first = temp;
}
return second;
};