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

2025年- H80-Lc188--198.打家劫舍(动态规划)--Java版

1.题目描述

在这里插入图片描述

2.思路

(1)首先只有一个房间的时候,dp[0]=nums[0].
(2)如果有两个房间的时候,dp[i]=math.max(nums[0],nums[i])。
(3)因为前两个元素已经初始化了,所以i从2开始遍历,遍历到最后一个元素nums.size()-1。
(4)如果偷最后一个房间,则收获的最大钱币数dp[i-2]+dp[i]。如果不偷最后一个房间,则收获的最大钱币数dp[i-1].
考虑头两个元素的状态,和最后一个元素的状态

3.代码实现

public class H198 {public int rob(int[] nums) {if(nums.length==0||nums==null){return 0;}if(nums.length==1){return nums[0];}int n=nums.length;int[] dp=new int[n];//如果只有一家dp[0]=nums[0];dp[1]=Math.max(nums[0],nums[1]);for(int i=2;i<n;i++){//如果i代表最后一家,如果最后一家我们偷的话,金钱的数额必定有nums[i],而且不能偷相邻的,所以要递归遍历dp[i-2]//如果i代表最后一家不偷的话,那么就递归遍历dp[i-1]中最大的金钱数量。dp[i]=Math.max(nums[i]+dp[i-2],dp[i-1]);}//最后返回dp得到的结果return dp[n-1];}public static void main(String[] args){H198 test=new H198();int[] nums={1,2,3,1};int res=test.rob(nums);System.out.print(res);}}
http://www.xdnf.cn/news/978031.html

相关文章:

  • 前端基础知识ES6系列 - 03(数组新增了哪些扩展)
  • SCADA|信创KingSCADA4.0与KingSCADA3.8的几点不同
  • 基于微信小程序的天气预报app
  • 一键批量修改XML标签名称:告别手工修改,高效管理标注数据
  • LangChain文档加载器自动选择器:支持多种文件格式的统一加载方法
  • jupyter中的checkpoints为空/打不开解决办法
  • [Java 基础]Math 类
  • SnapViewer:解决PyTorch官方内存工具卡死问题,实现高效可视化
  • Android Studio 无法安装HAXM,点击之后无反应
  • 链 表 类 型 全 面 总 结:单 向、双 向、循 环 链 表 的 特 性 与 选 型 指 南
  • 系统入侵排查实战指南:从Windows到Linux的应急响应与溯源分析​
  • Qt 中directoryChanged监听某个目录的内容是否发生变化
  • 达梦数据库DCA考试命令行操作
  • flink1.19.2+cdc-3.2.1遇到的问题及解决方案
  • Ubuntu 实现可视化组raid和升级raid
  • 成功在 Conda Python 2.7 环境中安装 Clipper(eCLIP peak caller)
  • Linux 系统可视化管理工具
  • python学习打卡day50
  • JPA将大数据量的Excel文件导入到数据库中
  • 拼音字母a和g的写法
  • AI Agent 核心策略解析:Function Calling 与 ReAct 的设计哲学与应用实践
  • React 第五十九节 Router中 createBrowserRouter使用详解与案例分析
  • Etcd数据持久化机制:WAL与Snapshot解析
  • python数据结构和算法(5)
  • zset类型
  • Bright Data网页抓取工具实战:BOSS直聘爬虫 + PandasAI分析洞察前端岗位市场趋势
  • 深度学习小项目合集之图像分割识别-视频介绍下自取
  • ThreadLocal实现原理
  • SpringBoot前后台交互 -- 登录功能实现(拦截器+异常捕获器)
  • 音频导入规范