【刷算法】LeetCode.198-打家劫舍

你是一个专业的小偷,设计偷盗沿街的衡宇。每间房内都藏有肯定的现金,影响你偷盗的唯一限制要素就是相邻的衡宇装有互相连通的防盗体系,假如两间相邻的衡宇在统一晚上被小偷突入,体系会自动报警。

给定一个代表每一个衡宇寄存金额的非负整数数组,盘算你在不震动警报装配的情况下,可以偷盗到的最高金额。

示例 1:

输入: [1,2,3,1]
输出: 4
诠释: 偷盗 1 号衡宇 (金额 = 1) ,然后偷盗 3 号衡宇 (金额 = 3)。
     偷盗到的最高金额 = 1 + 3 = 4 。

示例 2:

输入: [2,7,9,3,1]
输出: 12
诠释: 偷盗 1 号衡宇 (金额 = 2), 偷盗 3 号衡宇 (金额 = 9),接着偷盗 5 号衡宇 (金额 = 1)。
     偷盗到的最高金额 = 2 + 9 + 1 = 12 。
/**
 * @param {number[]} nums
 * @return {number}
 */
var rob = function(nums) {
    if(nums.length === 0)
        return 0;
    if(nums.length === 1)
        return nums[0];
    
    let prepre = nums[0], pre = Math.max(nums[0], nums[1]);
    
    for(let i = 2;i < nums.length;i++) {
        let temp = pre;
        pre = Math.max(prepre + nums[i], pre);
        prepre = temp;
    }
    
    return pre;
};
    原文作者:亚古
    原文地址: https://segmentfault.com/a/1190000017421063
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞