【代码随想录二刷】Day48-动态规划-Go
创始人
2025-05-31 11:05:59

代码随想录二刷Day48

今日任务

198.打家劫舍
213.打家劫舍II
337.打家劫舍III
语言:Go

198. 打家劫舍

链接:https://leetcode.cn/problems/house-robber/

func max(i, j int) int {if i < j {return j} else {return i}
}func rob(nums []int) int {//dp[i]表示0~i号房屋打劫的金额最大为dp[i]dp := make([]int, len(nums))dp[0] = nums[0]if len(nums) > 1 { //attentiondp[1] = max(nums[0], nums[1])}for i := 2; i < len(nums); i++ {dp[i] = max(dp[i - 2] + nums[i], dp[i - 1])}return dp[len(nums) - 1]
}

213. 打家劫舍II

链接:https://leetcode.cn/problems/house-robber-ii/
情况一:不包含首尾元素
情况二:不包含尾元素(偷了第一间屋子就不能偷最后一间屋子了)
情况三:不包含首元素(偷了最后一间屋子就不能偷第一间屋子了)
情况二/三包含了情况一,所以只需要考虑情况二/三

func max(i, j int) int {if i < j {return j} else {return i}
}func robRange(nums []int, start, end int) int {if start == end {return nums[start]}dp := make([]int, len(nums))dp[start] = nums[start]dp[start + 1] = max(nums[start], nums[start + 1])for i := start + 2; i <= end; i++ {dp[i] = max(dp[i - 2] + nums[i], dp[i - 1])}return dp[end]
}func rob(nums []int) int {if len(nums) == 1 {return nums[0]}if len(nums) == 2 {return max(nums[0], nums[1])}result1 := robRange(nums, 0, len(nums) - 2)result2 := robRange(nums, 1, len(nums) - 1)return max(result1, result2)
}

337. 打家劫舍III

链接:https://leetcode.cn/problems/house-robber-iii/

/*** Definition for a binary tree node.* type TreeNode struct {*     Val int*     Left *TreeNode*     Right *TreeNode* }*/
func max(i, j int) int {if i < j {return j} else {return i}
}//dp[0]-不偷当前节点的最高金额
//dp[1]-偷当前节点的最高金额
func robTree(root *TreeNode) [2]int {var dp [2]intif root == nil {dp[0] = 0dp[1] = 0return dp}left := robTree(root.Left)right := robTree(root.Right)//不偷rootdp[0] = max(left[0], left[1]) + max(right[0], right[1])//偷rootdp[1] = root.Val + left[0] + right[0]return dp
}func rob(root *TreeNode) int {dp := robTree(root)return max(dp[0], dp[1])
}

相关内容

热门资讯

普及一下“新漫游房卡多少钱一张... 新漫游是一款非常受欢迎的游戏,咨询房/卡添加微信:44858861许多玩家在游戏中会购买房卡来享受更...
玩家攻略“人皇大厅房卡正版如何... 【要素一】(KK)微信链接各大厅/房卡介绍微/44858861人皇大厅是一款非常火爆的游戏应用,拥有...
玩家亲测!德州ai辅助工具购买... 1、玩家亲测!德州ai辅助工具购买(wpk德州ai机器人)外挂透明挂辅助挂(有挂细节)-哔哩哔哩。2...
一分钟了解“微信群里用链接玩金... 微信群里用链接玩金花是一款非常受欢迎的游戏,咨询房/卡添加微信:44858861许多玩家在游戏中会购...
房卡秒懂“皇豪互娱房卡客服”详... 【要素一】(KK)微信链接各大厅/房卡介绍微/44858861皇豪互娱是一款非常火爆的游戏应用,拥有...