[198] 打家劫舍

49 阅读1分钟
/*
 * @lc app=leetcode.cn id=198 lang=javascript
 *
 * /*
 * @lc app=leetcode.cn id=198 lang=javascript
 *
 * [198] 打家劫舍
 */

// @lc code=start
/**
 * @param {number[]} nums
 * @return {number}
 */
var rob = function (nums) {
  if (nums.length === 0) return 0
  if (nums.length === 1) return nums[0]
  const memo = []
  memo[0] = nums[0]
  memo[1] = Math.max(nums[0], nums[1])
  for (let i = 2; i < nums.length; i++) {
    // 这里是判断偷最近一家还是最近两家
    // [2,3,4,5,6,7,8]从4开始,2+4>3,存变量6,i指向5,5+3>6,存变量8
    memo[i] = Math.max(nums[i] + memo[i - 2], memo[i - 1])
  }
  return memo[nums.length - 1]
}
// @lc code=end