跳转至

LC198 - 打家劫舍

HouseRobber.go
package DP

//func rob(nums []int) int {
//  size := len(nums)
//  var f func(int) int
//  f = func(index int) int {
//      if index >= size {
//          return 0
//      }
//      ret1 := nums[index] + f(index+2)
//      ret2 := f(index + 1)
//      return max(ret1, ret2)
//  }
//  return f(0)
//}

func rob(nums []int) int {
    // dp[i] = max(dp[i+1], nums[i] + dp[i+2])
    size := len(nums)
    dp := make([]int, size+2)
    for i := size - 1; i >= 0; i-- {
        dp[i] = max(dp[i+1], nums[i]+dp[i+2])
    }
    return dp[0]
}