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

相关推荐
程序猿老杨4 小时前
MQTT协议深度解析:从ESP32设备端到云端Broker的工程化实践
后端·物联网·芯片
nike0good5 小时前
Codeforces Round 1101 (Div. 2) 题解
算法
中年阿甘5 小时前
解析式布局-二次线长布局
线性代数·算法·矩阵
程序喵大人5 小时前
【C++进阶】STL算法与函数对象 -【C++进阶】STL算法与函数对象
开发语言·c++·算法
明月_清风5 小时前
显存即正义:不同显存容量能训多大的模型?一文说清硬件边界与训练策略
前端·后端·ai编程
阿kun要赚马内5 小时前
工具在langchain agent中的调用
人工智能·后端·python
IT_陈寒5 小时前
Vite的HMR在我项目上突然失效,排查三天找到离谱原因
前端·人工智能·后端
AINative软件工程6 小时前
LLM 应用的依赖注入工程实践:解耦 Client、Prompt 和 Tool Registry,让 AI 系统真正可测试可替换
后端·llm·前端工程化
鹿角片ljp6 小时前
LeetCode 53. 最大子数组和
算法·leetcode·职场和发展
腾渊信息科技公司6 小时前
Spring Boot集成TDengine实战:工业时序数据存储选型与迁移方案
spring boot·后端·tdengine