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~)还是挺开心的

相关推荐
有梦不弃9 小时前
模块化单体架构设计方案:DDD + 六边形架构落地实践
后端·架构
小程故事多_8011 小时前
从A2C、TRPO、PPO到GRPO,强化学习策略梯度算法完整演进与大模型落地实战解析
人工智能·算法
2601_9561219712 小时前
二分算法(知识点+题目)
c++·算法
江南十四行13 小时前
Spring框架核心(上)——IoC控制反转与DI依赖注入详解
java·后端·spring
IT_陈寒14 小时前
Redis缓存击穿把我坑惨了,原来这样设过期时间才靠谱
前端·人工智能·后端
妙码生花14 小时前
从 PHP 到 AI + Golang,程序员自救转型手记(五十二):管理员权限检查中间件,AI 随意放行预闯大祸
前端·后端·go
创安电气研究所15 小时前
用 Node.js 将变频器运行数据接入 MQTT
后端
董员外15 小时前
RAG 系统进化论(八):Agentic RAG(智能体式 RAG),从回答问题到完成任务
人工智能·后端·设计模式
AndrewHZ15 小时前
【LLM技术全景】阶段总结:技术原理篇核心知识回顾
人工智能·深度学习·算法·语言模型·大模型·llm·芯片开发
大勇前进15 小时前
告别 div 满天飞,HTML5 语义化标签真的有必要用吗?
后端