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

LeetCode算法题(Go语言实现)_61

题目

你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警。
给定一个代表每个房屋存放金额的非负整数数组,计算你 不触动警报装置的情况下 ,一夜之内能够偷窃到的最高金额。

一、代码实现(动态规划优化)

func rob(nums []int) int {prev, curr := 0, 0for _, num := range nums {prev, curr = curr, max(curr, prev + num)}return curr
}func max(a, b int) int {if a > b {return a}return b
}

二、算法分析

1. 核心思路
  • 滚动变量优化:仅维护前两个状态(前前最大值和前一最大值)
  • 状态转移方程:当前最大值 = max(前一最大值, 前前最大值 + 当前房屋金额)
  • 贪心选择:每一步选择局部最优解推进全局最优解
2. 关键步骤
  1. 初始化状态:prev=0(前前状态),curr=0(前一状态)
  2. 遍历房屋
    • 计算当前房屋两种决策的最大值
    • 滚动更新前两个状态值
  3. 结果返回:最终curr即为全局最优解
3. 复杂度
指标说明
时间复杂度O(n)线性遍历所有房屋
空间复杂度O(1)仅使用两个临时变量

三、图解示例

在这里插入图片描述

四、边界条件与扩展

1. 特殊场景验证
  • 空数组:返回0
  • 单房屋:直接返回该房屋金额
  • 双房屋:返回金额较大值
  • 全零数组:正确返回0
  • 交替大数:正确选择非相邻房屋
2. 扩展应用
  • 网络安全:选择不冲突节点进行渗透测试
  • 资源分配:优化不重叠任务的收益
  • 路径规划:寻找收益最大的不连续路径
3. 多语言实现
class Solution {public int rob(int[] nums) {int prev = 0, curr = 0;for (int num : nums) {int temp = Math.max(curr, prev + num);prev = curr;curr = temp;}return curr;}
}
class Solution:def rob(self, nums: List[int]) -> int:prev, curr = 0, 0for num in nums:prev, curr = curr, max(curr, prev + num)return curr

五、总结与优化

1. 算法对比
方法优势适用场景
动态规划时间复杂度最优常规场景
递归+记忆化代码直观教学演示
矩阵快速幂O(log n)时间复杂度极大n值计算
2. 工程优化
  • 循环展开:手动展开循环减少分支判断
  • SIMD指令:利用并行计算加速向量运算
  • 预计算缓存:存储常用结果减少重复计算
3. 扩展方向
  • 环形房屋:处理首尾相连的特殊情况
  • 多维约束:考虑时间、空间等多维度限制
  • 概率模型:引入成功概率的随机决策模型
http://www.xdnf.cn/news/335845.html

相关文章:

  • MYSQL之索引结构,为何要用B+树
  • 浅谈 Shell 脚本编程中引号的妙用
  • C++复习类与对象基础
  • 软件逆向工程核心技术:脱壳原理与实战分析
  • 《企业级前端部署方案:Jenkins+MinIO+SSH+Gitee+Jenkinsfile自动化实践》
  • 通过混合机器学习和 TOPSIS 实现智能手机身份验证的稳健行为生物识别框架
  • 【FAQ】HarmonyOS SDK 闭源开放能力 — PDF Kit
  • springboot使用mybatisPlus进行数据库增删改查
  • 华为首款鸿蒙电脑正式亮相
  • 超详细!RxSwift 中的 BehaviorRelay 使用教程(含原理 + 示例 + 实战)
  • 《供应链网络攻击的风险与防范》
  • OpenHarmony 5.0 切换已连接过的wifi切换失败
  • 普通IT的股票交易成长史--20250508晚复盘
  • python学生作业提交管理系统-在线作业提交系统
  • 搭建电商独立站跨境电商反向海淘系统的过程中网站健康运营的指标
  • 前端开发中移动端调试的日常工具整理
  • 【PostgreSQL数据分析实战:从数据清洗到可视化全流程】8.4 数据故事化呈现(报告结构设计/业务价值提炼)
  • 多线程初阶(2)
  • 【数据结构】01Trie
  • 【MySQL】存储引擎 - InnoDB详解
  • 大语言模型主流架构解析:从 Transformer 到 GPT、BERT
  • 矿井设备通信破局:ModbusTCP转DeviceNet网关应用实践
  • 【SpringMVC】详解cookie,session及实战
  • PostgreSQL 的 pg_start_backup 函数
  • VR博物馆,足不出户云逛展
  • SpringBoot+Dubbo+Zookeeper实现分布式系统步骤
  • 面向小型企业顶点项目的网络安全咨询人机协作框架
  • 自然语言到 SQL 转换:开启智能数据库交互新时代
  • C++入门小馆 :多态
  • 裸辞8年前端的面试笔记——JavaScript篇(一)