求數組不相鄰元素最大和

你是一個專業的小偷,計劃偷竊沿街的房屋。每間房內都藏有必定的現金,影響你偷竊的惟一制約因素就是相鄰的房屋裝有相互連通的防盜系統,若是兩間相鄰的房屋在同一夜被小偷闖入,系統會自動報警。數組

給定一個表明每一個房屋存放金額的非負整數數組,計算你在不觸動警報裝置的狀況下,可以偷竊到的最高金額。spa

示例 1:code

輸入: [1,2,3,1] 輸出: 4 解釋: 偷竊 1 號房屋 (金額 = 1) ,而後偷竊 3 號房屋 (金額 = 3)。 偷竊到的最高金額 = 1 + 3 = 4io

示例 2:ast

輸入: [2,7,9,3,1] 輸出: 12 解釋: 偷竊 1 號房屋 (金額 = 2), 偷竊 3 號房屋 (金額 = 9),接着偷竊 5 號房屋 (金額 = 1)。 偷竊到的最高金額 = 2 + 9 + 1 = 12 。function

/** * @param {number[]} nums * @return {number} */
var rob = function(nums) {
    const len = nums.length;
    if(len<=0) return 0;
    else if(len === 1) return nums[0];
    
    let excludeLast = 0,
        includeLast = nums[0];
    let excludeTemp;
    for(let i=1;i<len;i++) {
        excludeTemp = excludeLast > includeLast ? excludeLast : includeLast;
        includeLast = excludeLast + nums[i];
        excludeLast = excludeTemp;
    }
    return includeLast > excludeLast? includeLast : excludeLast
};
複製代碼
相關文章