题目描述:
你是一个盗窃专家,某一天晚上你要去盗窃某一条街道的一排房子。这些房子都有相连的防盗系统,如果你把相邻的两家都偷了那么就会触发报警器。
用一个数组来表示这些房子的金钱数量,请你完成 rob
函数,计算出在不触发报警器的情况下最多能偷多少钱。例如:
rob([1, 2, 3]) // => 4
参考答案:
const rob = (nums) => {
if(nums.length === 0) return 0;
nums.unshift(-Infinity);
const len = nums.length;
for(let i = 3; i < len; i++) {
nums[i] += Math.max(nums[i-2], nums[i-3]);
}
return Math.max(nums[len -1], nums[len -2]);
}