当前位置: 首页 > article >正文

代码随想录算法训练营第三十九天|LeetCode 198 打家劫舍、LeetCode 213 打家劫舍 ||、LeetCode 337 打家劫舍 |||

参考文章均来自代码随想录LeetCode 198 打家劫舍参考文章链接你是一个专业的小偷计划偷窃沿街的房屋。每间房内都藏有一定的现金影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统如果两间相邻的房屋在同一晚上被小偷闯入系统会自动报警。给定一个代表每个房屋存放金额的非负整数数组计算你 不触动警报装置的情况下 一夜之内能够偷窃到的最高金额。示例 1 输入[1,2,3,1] 输出4 解释偷窃 1 号房屋 (金额 1) 然后偷窃 3 号房屋 (金额 3)。 偷窃到的最高金额 1 3 4 。 示例 2 输入[2,7,9,3,1] 输出12 解释偷窃 1 号房屋 (金额 2), 偷窃 3 号房屋 (金额 9)接着偷窃 5 号房屋 (金额 1)。 偷窃到的最高金额 2 9 1 12 。dp[i]考虑下标i包括i以内的房屋最多可以偷窃的金额为dp[i]。决定dp[i]的因素就是第i房间偷还是不偷。如果偷第i房间那么dp[i] dp[i - 2] nums[i] 即第i-1房一定是不考虑的找出 下标i-2包括i-2以内的房屋最多可以偷窃的金额为dp[i-2] 加上第i房间偷到的钱。如果不偷第i房间那么dp[i] dp[i - 1]即考 虑i-1房注意这里是考虑并不是一定要偷i-1然后dp[i]取最大值即dp[i] max(dp[i - 2] nums[i], dp[i - 1]);dp[0] 一定是 nums[0]dp[1]就是nums[0]和nums[1]的最大值即dp[1] max(nums[0], nums[1]);dp[i] 是根据dp[i - 2] 和 dp[i - 1] 推导出来的那么一定是从前到后遍历classSolution{public:introb(vectorintnums){if(nums.size()0)return0;if(nums.size()1)returnnums[0];vectorintdp(nums.size()1,0);dp[0]nums[0];dp[1]max(nums[0],nums[1]);for(inti2;inums.size();i){dp[i]max(dp[i-2]nums[i],dp[i-1]);}returndp[nums.asize()-1];}};时间复杂度: O(n)空间复杂度: O(n)LeetCode 213 打家劫舍 ||参考文章链接你是一个专业的小偷计划偷窃沿街的房屋每间房内都藏有一定的现金。这个地方所有的房屋都 围成一圈 这意味着第一个房屋和最后一个房屋是紧挨着的。同时相邻的房屋装有相互连通的防盗系统如果两间相邻的房屋在同一晚上被小偷闯入系统会自动报警 。给定一个代表每个房屋存放金额的非负整数数组计算你 在不触动警报装置的情况下 今晚能够偷窃到的最高金额。示例 1 输入nums [2,3,2] 输出3 解释你不能先偷窃 1 号房屋金额 2然后偷窃 3 号房屋金额 2, 因为他们是相邻的。 示例 2 输入nums [1,2,3,1] 输出4 解释你可以先偷窃 1 号房屋金额 1然后偷窃 3 号房屋金额 3。 偷窃到的最高金额 1 3 4 。 示例 3 输入nums [1,2,3] 输出3成环后有三种情况情况一是首尾都不考虑情况二是只考虑首情况三是只考虑尾而情况二和情况三包含情况一情况三虽然是考虑包含尾元素但不一定要选尾部元素所以求情况二和情况三后取最大值即可 每个情况都是打家劫舍的流程classSolution{public:introbRange(vectorintnums,intstart,intend){if(endstart)returnnums[start];vectorintdp(nums.size());dp[start]nums[start];dp[start1]max(nums[start],nums[start1]);for(intistart2;iend;i){dp[i]max(dp[i-2]nums[i],dp[i-1]);}returndp[end];}introb(vectorintnums){if(nums.size()0)return0;if(nums.size()1)returnnums[0];intresult1robRange(nums,0,nums.size()-2);// 情况二intresult2robRange(nums,1,nums.size()-1);// 情况三returnmax(result1,result2);}};时间复杂度: O(n)空间复杂度: O(n)LeetCode 337 打家劫舍 |||参考文章链接力扣题目链接本题属于树形dp 之前没做过 详看参考文章 讲的很清楚后面再多做一做理解一下/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode() : val(0), left(nullptr), right(nullptr) {} * TreeNode(int x) : val(x), left(nullptr), right(nullptr) {} * TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), * right(right) {} * }; */classSolution{public:introb(TreeNode*root){vectorintresultrobTree(root);returnmax(result[0],result[1]);}// 长度为2的数组0不偷1偷vectorintrobTree(TreeNode*cur){if(curNULL)returnvectorint{0,0};vectorintleftrobTree(cur-left);vectorintrightrobTree(cur-right);// 偷cur那么就不能偷左右节点。intval1cur-valleft[0]right[0];// 不偷cur那么可以偷也可以不偷左右节点则取较大的情况intval2max(left[0],left[1])max(right[0],right[1]);return{val2,val1};}};时间复杂度O(n)每个节点只遍历了一次空间复杂度O(log n)算上递推系统栈的空间

相关文章:

代码随想录算法训练营第三十九天|LeetCode 198 打家劫舍、LeetCode 213 打家劫舍 ||、LeetCode 337 打家劫舍 |||

参考文章均来自代码随想录 LeetCode 198 打家劫舍 参考文章链接 你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯…...

LoRA技术在AI视频生成中的应用与优化

1. 项目概述"Wan 2.1 Squish LoRA Video Tutorial"这个标题乍看简单,但包含了几个关键信息点。作为一名在AI生成内容领域摸爬滚打多年的从业者,我一眼就看出这是关于LoRA模型在视频生成中的应用教程。具体来说,Wan 2.1应该是某个特…...

Wan2.2-I2V-A14B风格迁移应用:将输入文本映射至特定艺术家视觉风格

Wan2.2-I2V-A14B风格迁移应用:将输入文本映射至特定艺术家视觉风格 1. 镜像概述与核心能力 Wan2.2-I2V-A14B是一款专为艺术风格视频生成设计的私有部署镜像,能够将文本描述转化为具有特定艺术家风格的动态视频作品。这个镜像经过深度优化,特…...

AI素养危机:技术认知与风险评估的实践指南

1. AI素养危机的现状与根源最近在技术社区里有个热议话题:我们正在AI素养培养上集体失败。这个现象不仅出现在普通用户群体,就连很多科技从业者也存在明显的认知断层。上个月我参加了一场行业研讨会,发现台下80%的开发者居然说不清大语言模型…...

走进涠洲岛环岛路,解锁火山海岸原生态风光

涠洲岛静卧于广西北海市南部的海域之中,作为中国最大且最年轻的火山岛,其地表形态完整记录了第四纪以来火山喷发与海洋侵蚀的共同作用。环岛游所经之处,海蚀崖、熔岩台地、珊瑚碎屑滩、渔村石屋依次展开,构成了一座没有围墙的火山…...

智能体框架开发指南:从ReAct模式到生产级Agentic应用构建

1. 项目概述:一个面向开发者的智能体框架 最近在GitHub上看到一个挺有意思的项目,叫 laugiov/agentic-dev-framework 。光看名字, agentic 这个词就挺抓人眼球的,它直译过来是“能动的”、“有自主性的”,和 dev-…...

注意力机制在LLM推理中的核心作用与优化策略

1. 注意力机制在LLM推理中的核心作用注意力机制作为Transformer架构的核心组件,其本质是一种信息路由系统。在自回归生成过程中,每个新token的生成都依赖于对历史上下文的动态加权聚合。这种机制的技术实现基于三个核心向量:查询(…...

AI安全评估:从黑盒到白盒的深度实践

1. 项目概述:AI安全评估的现状与挑战在人工智能技术快速发展的今天,大型语言模型(LLM)和多模态模型(MLLM)的安全性问题已成为行业关注的焦点。随着模型能力的不断提升,其潜在风险也呈现出复杂化…...

CLI与MCP对比:命令行与图形界面的运维效率之争

1. 命令行界面与多控制面板的世纪之争第一次在服务器机房看到老运维用纯命令行界面(CLI)操作整个数据中心时,那种行云流水的操作给我留下了深刻印象。而隔壁工位的产品经理却坚持认为,现代多控制面板(MCP)才…...

如何通过开源工具OmenSuperHub优化惠普OMEN游戏本性能:完整指南

如何通过开源工具OmenSuperHub优化惠普OMEN游戏本性能:完整指南 【免费下载链接】OmenSuperHub 使用 WMI BIOS控制性能和风扇速度,自动解除DB功耗限制。 项目地址: https://gitcode.com/gh_mirrors/om/OmenSuperHub 还在为惠普OMEN游戏本官方控制…...

终极Photon-GAMS光影包教程:3步将方块世界变电影大片

终极Photon-GAMS光影包教程:3步将方块世界变电影大片 【免费下载链接】Photon-GAMS Personal fork of Photon shaders 项目地址: https://gitcode.com/gh_mirrors/ph/Photon-GAMS 还在为Minecraft那单调的像素画面而烦恼吗?想要一键让方块世界拥有…...

大模型在软件开发中的实践挑战与优化策略

1. 大模型如何改变软件开发的游戏规则去年我在重构一个遗留系统时,第一次尝试用大模型辅助解决代码迁移问题。当时需要将VB6的老旧模块转换为C#,本以为大模型能轻松搞定,结果生成的代码里竟然出现了VB6特有的On Error Resume Next语句——这个…...

YOLOv8与nli-MiniLM2-L6-H768联合作业:图像描述文本的合规性审核

YOLOv8与nli-MiniLM2-L6-H768联合作业:图像描述文本的合规性审核 1. 社交平台面临的内容审核挑战 每天有数以亿计的图片在社交平台上被上传和分享,如何高效准确地识别其中的违规内容成为平台运营者的头号难题。传统人工审核团队面临三大困境&#xff1…...

内容创作者福音:LongCat-Image-Edit V2快速生成统一风格配图

内容创作者福音:LongCat-Image-Edit V2快速生成统一风格配图 你有没有过这样的经历?写一篇深度文章,花了两天时间,最后卡在配图上——要么找不到风格统一的图片,要么找到的图片版权不明,要么自己动手做图&…...

工厂生产瓶颈工序识别,3个实操方法快速定位:2026智能工厂效能优化全景盘点

在2026年的工业4.0深化阶段,制造企业的竞争已从单纯的“产能比拼”转向“响应速度与柔性交付”的博弈。生产瓶颈(Bottleneck)作为制约整条生产线产出的“短板”,其识别与优化直接决定了企业的OEE(设备综合效率&#xf…...

原创文档:基于Chaboche物理约束与LSTM残差学习的316L不锈钢循环塑性灰箱本构建模研究

摘要:针对316L不锈钢循环塑性响应的非线性、路径依赖及滞回特征,传统经验本构模型在复杂加载条件下描述能力有限,纯数据驱动模型又缺乏物理可解释性。为兼顾物理意义与预测精度,本文提出一种基于Chaboche物理约束与LSTM残差学习的…...

基于Chaboche物理约束与LSTM残差学习的316L不锈钢循环塑性灰箱本构建模研究

摘要:针对316L不锈钢循环塑性响应的非线性、路径依赖及滞回特征,传统经验本构模型在复杂加载条件下描述能力有限,纯数据驱动模型又缺乏物理可解释性。为兼顾物理意义与预测精度,本文提出一种基于Chaboche物理约束与LSTM残差学习的…...

全国分地区分规模新注册企业统计数据

01、数据简介本数据利用爱企查的高级检索,分规模、地区、年份,对各地区的新注册企业数目进行统计。数据名称:全国分规模新注册企业统计数据数据年份:2000年-2020年02、相关数据注册资金分为10万以内、10-50万、50-100万、100-200万…...

前端手记(三):Pinia 状态管理 ——AI 半结构化数据解析与容错处理

所属项目: 面向全场景用药安全的医师助手 Agent 团队: ColdX 山东大学软件学院 2026年春季项目实训 个人分工: 前端开发 & 界面设计 目录一、前言二、为什么选择 Pinia 管理 AI 诊疗数据本项目的 AI 决策链路会返回三类核心数据&#xf…...

移相变压器电力系统短路电流抑制系统设计【附代码】

✨ 本团队擅长数据搜集与处理、建模仿真、程序设计、仿真代码、EI、SCI写作与指导,毕业论文、期刊论文经验交流。 ✅ 专业定制毕设、代码 ✅ 如需沟通交流,查看文章底部二维码(1)基于串联电抗器切换的移相变压器限流拓扑优化&…...

Windows + VSCode + CMake 编译

一、前提(你已经满足) 你有 CMakeLists.txt你有 main.cpp你装了 MinGW 或 MSVC你装了 CMake 命令(cmd 里输入 cmake --version 能看到版本) 可直接ctrl shift P 通过界面进行配置和编译,以下是命令行编译 二、最标准的 3 步编译…...

如何增加网站外链?实测月增500点击,附发件模板与耗时明细

做SEO绕不开获取外部推荐投票。我用纯自然联系方式测试了30天,Ahrefs后台显示新增了18条DR大于40的独立域指向。当月Google Search Console记录的非品牌词曝光暴涨4200次,实际落地页获得了512个独立访客访问。没有任何付费购买行为,仅靠发送1…...

外链代发是否有效?独立站买外链必看这3个防坑细节

花费五百美元购买两千个带锚文本的超链接,独立站后台自然搜索点击量停滞在每天十三个。服务商后台显示文章已发布在权重七十的科技博客上。查阅谷歌搜索控制台,新收录页面数量为零。买卖双方信息差让大量预算流失在无效的数字游戏里。 自然积累一个权威…...

实战:如何提高网站排名?提升20%转化率的内部链接搭建公式

许多企业主和市场人员在进行搜索引擎优化(SEO)时,往往会将全部预算和精力投入到外部链接建设或新内容的疯狂产出中。然而,在多年的SEO实战经验中,我们发现一个常常被忽视、却能带来巨大转化收益的“隐形资产”——内部…...

挖掘机柴油机多工况智能故障识别系统设计【附代码】

✨ 本团队擅长数据搜集与处理、建模仿真、程序设计、仿真代码、EI、SCI写作与指导,毕业论文、期刊论文经验交流。 ✅ 专业定制毕设、代码 ✅ 如需沟通交流,查看文章底部二维码(1)基于CAN总线多源数据采集与分层工况判别模型&#…...

软考高级系统架构设计师备考(二十四):软件工程—软件系统建模

在软考高级系统架构设计师考试中,软件系统建模是连接“需求分析 → 系统设计”的关键桥梁,属于: 综合知识高频考点(模型识别、工具选择) 案例分析常考点(建模方法选择、图示分析) 论文加分点(建模支撑架构设计) 一、软件系统建模概述 1 什么是软件建模 软件建模是…...

470-510MHz频段无线通信系统设计与CC1100E+CC1190方案优化

1. 470-510MHz频段无线通信系统设计挑战在工业自动化和物联网应用中,470-510MHz频段因其良好的传播特性成为热门选择。这个频段属于中国短距离设备(SRD)管制范围,最大允许输出功率为17dBm(50mW)。实际部署中,工程师常面…...

终极实战指南:iOS 15-16设备激活锁离线绕过完整解决方案

终极实战指南:iOS 15-16设备激活锁离线绕过完整解决方案 【免费下载链接】applera1n icloud bypass for ios 15-16 项目地址: https://gitcode.com/gh_mirrors/ap/applera1n 面对二手iPhone的激活锁界面,或是因忘记Apple ID密码而无法使用的iOS设…...

【图像加密解密】XOR和置乱和Arnold变换图像加解密【含GUI Matlab源码 15385期】

💥💥💥💥💥💥💥💥💞💞💞💞💞💞💞💞💞Matlab领域博客之家💞&…...

Profinet转EtherCAT网关通讯架构及EtherCAT超距故障解决原理

在工业自动化控制系统中,Profinet与EtherCAT协议优势显著,Profinet多用于PLC与上位机、网关等组网通讯,EtherCAT因高实时性和高同步性,是伺服驱动器等设备首选。本次应用用Profinet转EtherCAT网关作通讯枢纽,实现西门子…...