题解 | #打家劫舍(二)#

打家劫舍(二)

https://www.nowcoder.com/practice/a5c127769dd74a63ada7bff37d9c5815

package main


/**
 * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
 *
 *
 * @param nums int整型一维数组
 * @return int整型
 */
func robTmp(nums []int) int {
	// write code here
	if len(nums) == 1 {
		return nums[0]
	}
	tmpBigger := nums[0]
	if tmpBigger < nums[1] {
		tmpBigger = nums[1]
	}
	if len(nums) == 2 {
		return tmpBigger
	}
	dp := make([]int, len(nums))
	dp[0] = nums[0]
	dp[1] = tmpBigger
	for i := 2; i < len(nums); i++ {
		tmp := dp[i-2] + nums[i]
		if tmp < dp[i-1] {
			tmp = dp[i-1]
		}
		dp[i] = tmp
	}
	return dp[len(nums)-1]
}

func rob(nums []int) int {
	// write code here
	if len(nums) == 1 {
		return nums[0]
	}
	tmpBigger := nums[0]
	if tmpBigger < nums[1] {
		tmpBigger = nums[1]
	}
	if len(nums) == 2 {
		return tmpBigger
	}

	//第一种偷法自然忽略最后一家
	p1 := robTmp(nums[:len(nums)-1])
	//第二种偷法自然忽略第一家
	p2 := robTmp(nums[1:])
	if p1 < p2 {
		return p2
	}
	return p1
}

全部评论

相关推荐

不愿透露姓名的神秘牛友
02-16 22:33
杉川机器人 嵌入式工程师 18.0k*13.0, 年终奖1~9个月浮动
点赞 评论 收藏
分享
秋国🐮🐴:拿到你简历编号然后让你知道世间险恶
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务