Leetcode 213.打家劫舍2(内含闲谈,打劫真是技术活,好题,716)

题目

26年7月16日(首刷看解)

Go 复制代码
func rob(nums []int) int {
    if len(nums)<=1{
        return nums[0]
    }
    res1:=rob1(nums[1:])
    res2:=rob1(nums[:len(nums)-1])
    return max(res1,res2)
}

func rob1(nums []int) int {
   //dp[n],表示打劫前n间房的最高金额,对应下标[0,n-1]
    dp:=make([]int,len(nums)+1)
    dp[0]=0
    dp[1]=nums[0]
    for i:=2;i<=len(nums);i++{
        dp[i]=max(dp[i-1],dp[i-2]+nums[i-1])
    }
    return dp[len(nums)]
}

思路

好题,我没想出来,看了题解觉得比较妙

思路就是如下图

这一道题不允许的就是出现首尾同时被打劫的情况,那么可以分成这三种情况考虑(考虑不是必打劫),那么情况2包含于情况1和3,所以只保留情况1和3,此时其实注意到可以套用打家劫舍基础版 的做法。只不过考虑的数组范围分成两种。一种是考虑首没考虑尾,一种是没考虑首考虑尾

调用两次基础函数后取最大值。

闲谈

最近掘金的创作等级到了4,这个等级写的文章都会推荐到首页,我之前没到4级写的200篇好像只有不到20被推荐到首页了,接下来的每一篇都会推荐到首页,意味着阅读量或许会增加,😄(nice~)还是挺开心的

相关推荐
拓恒技术6 小时前
无人机巡检AI算法的工程化落地:从需求到交付的5个核心环节
人工智能·算法·无人机
晨曦中的暮雨6 小时前
限流算法——固定窗口、滑动窗口、漏桶、令牌桶
java·开发语言·算法
怕浪猫6 小时前
Claude Code vs Codex:Computer Use 实现原理深度拆解
算法·面试·github
喵了几个咪6 小时前
GoWind CMS 拆解:在 Go 里给 TipTap 搭一套 Yjs 协同后端
开发语言·后端·golang
Flynt7 小时前
我把微信运动的排行榜和定点推送复刻了一遍:100万次步数更新只要4秒,坑在别处
redis·后端·性能优化
罗西的思考8 小时前
AI 时代的 “房谋杜断”:如何培养能力、品味与判断力
人工智能·算法·机器学习
淡海水8 小时前
07-02-源码-.NET Core GC分配路径
算法·unity·c#·.netcore·gc·1024程序员节
_孤傲_9 小时前
快速掌握 MySQL 语法
数据库·后端·mysql
下一站春风里10 小时前
位运算完整学习笔记:按位与(&)+ 异或(^)
开发语言·c++·算法
DRobot10 小时前
【机械制图与CAD实战(二十五)】螺纹的表示方法
算法·机械制图