思路
- 动态规划
func rob(nums []int) int {
if len(nums) < 2 {
return nums[0]
}
// dp[i] 表示到第i家为止,小偷能够偷窃到的最高金额
dp := make([]int, len(nums))
dp[0] = nums[0]
dp[1] = max(nums[0], nums[1])
for i:=2; i<len(nums); i++ {
if nums[i] + dp[i-2] > dp[i-1] {
dp[i] = nums[i] + dp[i-2]
}else{
dp[i] = dp[i-1]
}
}
return max(dp[len(nums)-1], dp[len(nums)-2])
}