package leetcode
func rob(nums []int) int {
if len(nums) == 1 {
return nums[0]
}
dp := make([]int, len(nums), len(nums))
dp[0] = nums[0]
dp[1] = max(nums[0], nums[1])
//dp数组为考察到当前房屋时的最高金额,两种情况,一种是选择当前房屋,因为不能相邻,所以是当前房屋-2的房屋的最高金额+当前房屋金额;另一种则是不选择当前房屋,则取相邻的前一房屋的最高金额;
for i := 2; i < len(nums); i++ {
dp[i] = max(dp[i-2]+nums[i], dp[i-1])
}
return dp[len(nums)-1]
}
func max(x, y int) int {
if x > y {
return x
}
return y
}
leetcode 第198题-打家劫舍
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
推荐阅读更多精彩内容
- LeetCode 第 198 题:打家劫舍 传送门:198. 打家劫舍。 你是一个专业的小偷,计划偷窃沿街的房屋。...
- 一.解法 https://leetcode-cn.com/problems/house-robber/要点:dp动...
- 1. 题目 你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房...
- 本来在做了几天的动态规划(Dynamic Programming,DP),这道EZ难度的动规题应该是手到擒来的。但...