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

打家劫舍00

题目链接

打家劫舍

题目描述

注意点

  • 如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警
  • 0 <= nums[i] <= 400

解答思路

  • 最初想的是使用深度优先遍历,到达任意一个位置时,小偷想要偷窃最高金额,一定要选择后面第2个房屋或后面第3个房屋,所以dfs遍历时根据后面第2个房屋和后面第3个房屋的金额判断当前位置的最高金额
  • 使用dfs同一个房屋会被计算多次,当数据量变大时会超时,选择使用动态规划解决本题,其思想为:任意一个房屋的金额由其前面第2个房屋及前面第3个房屋的最高金额决定,所以只需要一次遍历就可不断推出后面房屋的最大金额

代码

class Solution {public int rob(int[] nums) {if (nums.length == 1) {return nums[0];}if (nums.length == 2) {return Math.max(nums[0], nums[1]);}int n = nums.length;int[] dp = new int[n];dp[0] = nums[0];dp[1] = nums[1];dp[2] = nums[0] + nums[2];for (int i = 3; i < n; i++) {dp[i] = nums[i] + Math.max(dp[i - 2], dp[i - 3]);}return Math.max(dp[n - 1], dp[n - 2]);}
}

关键点

  • 动态规划的思想
http://www.lryc.cn/news/138694.html

相关文章:

  • ​LeetCode解法汇总1267. 统计参与通信的服务器
  • Go 语言在 Windows 上的安装及配置
  • 如何在不使用任何软件的情况下将 PDF 转换为 Excel
  • 【C语言】动态内存管理(malloc,free,calloc,realloc)-- 详解
  • adb 命令
  • Linux 进程间通信——消息队列
  • ChatGPT在智能娱乐和游戏互动中的应用如何?
  • 【Ubuntu】systemd 及其工具
  • 抖音seo矩阵系统源代码开发部署分享
  • FastJson在Java后端方面解析使用(二)
  • PyTorch深度学习实战(5)——计算机视觉基础
  • ImageReader保存图片转 opencvmat
  • 【vue3+ts项目】配置husky+配置commitlint
  • html实现iframe全屏
  • 【es6】中的Generator
  • 桥梁安全监测方法和内容是什么?
  • prometheus部署及钉钉告警集成Grafana
  • Java百度提前批面试题
  • Go语言中的Oop面向对象
  • Duplicate keys detected: ‘1‘. This may cause an update error.
  • C++(8.21)c++初步
  • 【【Verilog典型电路设计之log函数的Verilog HDL设计】】
  • 数字放大(C++)
  • FOC控制框架图
  • Spring工具类(获取bean,发布事件)
  • 腾讯云和阿里云服务器折扣对比_看看哪家划算?
  • GO语言中的Defer与Error异常报错详细教程
  • AP6315 DC单节锂电池充电IC 同步2A锂电芯片
  • PDF校对工具正式上线,为用户提供卓越的文档校对解决方案
  • WSL 配置 Oracle 19c 客户端