部署DeepSeek模型,进群交流最in玩法!
立即加群
发布
社区首页 >专栏 >213. 打家劫舍 II

213. 打家劫舍 II

原创
作者头像
Michel_Rolle
发布2025-03-04 15:45:16
发布2025-03-04 15:45:16
3400
代码可运行
举报
文章被收录于专栏:AI分享
运行总次数:0
代码可运行

link

你是一个专业的小偷,计划偷窃沿街的房屋,每间房内都藏有一定的现金。这个地方所有的房屋都 围成一圈 ,这意味着第一个房屋和最后一个房屋是紧挨着的。同时,相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警

给定一个代表每个房屋存放金额的非负整数数组,计算你 在不触动警报装置的情况下 ,今晚能够偷窃到的最高金额。

Example 1:

代码语言:javascript
代码运行次数:0
复制
Input: nums = [2,3,2]
Output: 3
Explanation: You cannot rob house 1 (money = 2) and then rob house 3 (money = 2), because they are adjacent houses.
代码语言:javascript
代码运行次数:0
复制
func rob(nums []int) int {
	size := len(nums)
	switch size {
	case 0:
		return 0
	case 1:
		return nums[0]
	}
	// 把环斩断,就变成了 198 题
	// 斩断的方式分为,在 0 位和不在 0 位 两种。
	return max(robbing(nums[1:]), robbing(nums[:size-1]))
}

func max(a, b int) int {
	if a > b {
		return a
	}
	return b
}
func robbing(nums []int) int {
	// a 对于偶数位上的最大值的记录
	// b 对于奇数位上的最大值的记录
	var a, b int
	for i, v := range nums {
		if i%2 == 0 {
			a = max(a+v, b)
		} else {
			b = max(a, b+v)
		}
	}

	return max(a, b)
}

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档