【LeetCode】【算法】198. 打家劫舍

LeetCode 198. 打家劫舍

题目描述

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

思路

因为不能偷相邻的房间,假设当前这间必偷,其他的要么偷第n-2间,要么偷第n-3
动态规划求解,dp数组含义为偷窃当前房屋能够获得的最高金额
初始化:dp数组初始化为0,dp[0]初始化为nums[0]dp[1]初始化为nums[1]dp[2]的取值为Math.max(dp[0]+nums[2], dp[1])
动态求解:for循环从3开始,dp[i]=Math.max(dp[i-2]+nums[i], dp[i-3] + nums[i])
最高金额记录:定义变量max,if (max > dp[i]) max = dp[i]

代码

class Solution {public int rob(int[] nums) {if (nums == null || nums.length == 0){return 0;}else if (nums.length == 1){return nums[0];}else if (nums.length == 2){return Math.max(nums[0], nums[1]);}int[] dp = new int[nums.length];// 初始化dpdp[0] = nums[0];dp[1] = nums[1];dp[2] = Math.max(dp[1], dp[0] + nums[2]);if (nums.length == 3){return dp[2];}int cur_max = dp[2];// 正式对dp做操作for (int i = 3; i < dp.length; i++) {dp[i] = Math.max(dp[i - 2] + nums[i], dp[i - 3] + nums[i]);if (dp[i] > cur_max){cur_max = dp[i];}}return cur_max;}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/58979.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

运维智能化转型:AIOps引领IT运维新浪潮

1. AIOps是什么&#xff1f; AIOps&#xff08;Artificial Intelligence for IT Operations&#xff09;&#xff0c;即人工智能在IT运维中的应用&#xff0c;通过机器学习技术处理运维数据&#xff08;如日志、监控信息和应用数据&#xff09;&#xff0c;解决传统自动化运维…

Spring Boot 与 Vue 共筑航空机票预定卓越平台

作者介绍&#xff1a;✌️大厂全栈码农|毕设实战开发&#xff0c;专注于大学生项目实战开发、讲解和毕业答疑辅导。 &#x1f345;获取源码联系方式请查看文末&#x1f345; 推荐订阅精彩专栏 &#x1f447;&#x1f3fb; 避免错过下次更新 Springboot项目精选实战案例 更多项目…

2024 第五次周赛

A: 直接遍历即可 #include<bits/stdc.h> using namespace std;typedef long long ll; typedef pair<ll, ll>PII; const int N 2e6 10; const int MOD 998244353; const int INF 0X3F3F3F3F;int n, m; int main() {cin >> n;int cnt 0;for(int i 0; i …

node.js安装和配置教程

软件介绍 Node.js是一个免费的、开源的、跨平台的JavaScript运行时环境&#xff0c;允许开发人员在浏览器之外编写命令行工具和服务器端脚本。 Node.js是一个基于Chrome JavaScript运行时建立的一个平台。 Node.js是一个事件驱动I/O服务端JavaScript环境&#xff0c;基于Goo…

NoSQL大数据存储技术测试(2)NoSQL数据库的基本原理

写在前面&#xff1a;未完成测试的同学&#xff0c;请先完成测试&#xff0c;此博文供大家复习使用&#xff0c;&#xff08;我的答案&#xff09;均为正确答案&#xff0c;大家可以放心复习 单项选择题 第1题 NoSQL的主要存储模式不包括 键值对存储模式 列存储模式 文件…

Java集合框架之Map接口

Map接口是Java集合框架中的一个关键组件&#xff0c;它以一种键值对&#xff08;key-value pair&#xff09;的形式存储数据&#xff0c;其中每个键都是唯一的&#xff0c;并且与一个值相关联。本文将深入探讨Map接口的特点、主要实现类、使用方法以及实际应用中的注意事项。 …

斐波那契数的第n个数代码分享(c基础)

1&#xff1a;迭代 //斐波那契数的第n个数 #include<stdio.h> //unsigned long long Fib(n) //{ // // if (1 n || 2 n) // return 1; // else return Fib((n - 1) Fib((n - 2); // // //} unsigned long long Fib(n) {if (n 1 || n 2)return 1;else{int j 3;u…

Java学习篇之JVM 调优

Java学习篇之JVM 调优 一、JVM 是什么&#xff1f;二、JVM 官方参数建议三、JVM调优的场景四、如何监控JVM五、JVM调优的流程步骤1. 明确优化目标2. 监控和分析3. 确定调优参数4. 实施调优策略5. 持续观察和调整6. 定期评估和优化 一、JVM 是什么&#xff1f; JVM&#xff0c;…

STM32单片机WIFI语音识别智能衣柜除湿消毒照明

实践制作DIY- GC0196-WIFI语音识别智能衣柜 一、功能说明&#xff1a; 基于STM32单片机设计-WIFI语音识别智能衣柜 二、功能介绍&#xff1a; STM32F103C系列最小系统板LCD1602显示器ULN2003控制的步进电机&#xff08;柜门开关&#xff09;5V加热片直流风扇紫外消毒灯DHT11…

qt QShortcut详解

1、概述 QShortcut是Qt框架中的一个类&#xff0c;它提供了一种创建键盘快捷键的方式。通过QShortcut&#xff0c;开发者可以将特定的键盘组合&#xff08;如CtrlC、AltF4等&#xff09;与应用程序中的动作&#xff08;如复制、关闭窗口等&#xff09;关联起来。当用户在应用程…

Seldon Core大模型部署详解

一 Seldon Core定义 Seldon Core 目前是机器学习模型部署领域最受欢迎的方案之一&#xff0c;由 Seldon 公司开源和维护&#xff0c;旨在为不同框架下训练出来的模型&#xff08;Tensorflow&#xff0c;Pytorch&#xff0c;SKLearn&#xff0c;XGBoost&#xff09;提供一套相对…

Docker 的常用命令有哪些?

Docker 有很多命令&#xff0c;这里列一下比较常用的: dockerrun:启动一个新的容器 docker ps:列出正在运行的容器 docker ps-a:列出所有容器 docker stop:停止正在运行的容器 docker start:启动已停止的容器 docker rm:删除容器 dockerimages:列出本地镜像 docker pu:…

C语言笔记(字符串函数,字符函数,内存函数)

目录 前言 1.字符串函数 1.1.strlen 1.2.strcpy 1.3.strcat 1.4.strcmp 1.5.strncpy 1.6.strncat 1.7.strncmp 1.8.strstr 1.9.strtok 1.10.strerror 2.字符函数 2.1字符分类函数 2.2字符转换函数 3.内存函数 3.1.mencpy 3.2.memmove 3.3.memcmp 前言 本文重…

Debian 12环境里部署nginx步骤记录

前言 浅记录一下 在Debian 12环境里安装nginx的过程&#xff0c;这个过程并没有特别顺利&#xff0c;有遇到各种报错&#xff0c;这些报错&#xff0c;我也会记录进来&#xff1b;方便自己后续查看以及供需要的小伙伴参考吧~~ 主要参考资料&#xff1a;https://blog.csdn.ne…

详解基于C#开发Windows API的SendMessage方法的鼠标键盘消息发送

在C#中&#xff0c;SendMessage方法是一个强大的工具&#xff0c;它允许我们与Windows API交互&#xff0c;模拟键盘和鼠标事件。本文将详细介绍如何使用SendMessage方法来发送鼠标和键盘消息。 1. SendMessage方法概述 SendMessage是Windows API中的一个函数&#xff0c;它用…

单片机入门知识

1单片机系统的int是16位 计算机系统的int是32位&#xff08;数据总线&#xff09; 2的16次方是65536 所以在单片机中&#xff0c;如果表示一个正整数&#xff0c;这个数字的范围是0~65535&#xff0c;总共有65536种可能 2内存条用于存储计算机运行时的数据&#xff0c;是连接…

ABAP:SET CURSOR FIELD设置鼠标焦点

SET CURSOR FIELD <字段名>&#xff1a;设置鼠标焦点到该字段 SET CURSOR 设置到鼠标焦点列还是行 SET CURSOR LINE 设置鼠标焦点到行 GET CURSOR field <字段名> &#xff1a;这个相对应的获取鼠标焦点得到的字段

Unity Windows 2023 Release-Notes

&#x1f308;Unity Windows 2023 Release-Notes 本文信息收集来自自动搜集工具&#x1f448; 版本更新内容2023.2.13Windows: Fixed Double backslash becoming single backslash when passing a Network path as a command line argument.(UUM-55979)2023.2.9Windows: Fixed…

数据挖掘(十)

数据挖掘&#xff08;十&#xff09; 文章目录 数据挖掘&#xff08;十&#xff09;物体分类应用场景和目标深度神经网络应用 对于去欸的那个图像中的物体&#xff0c;我们使用像素值作为神经网络的输入值&#xff0c;自动找到有用的像素组合&#xff0c;形成更高层级的特征&am…

ArcGIS从Excel表格文件导入XY数据并定义坐标系与投影的方法

本文介绍在ArcMap软件中&#xff0c;从Excel表格文件中批量导入坐标点数据&#xff0c;将其保存为.shp矢量格式&#xff0c;并定义坐标系、转为投影坐标系的方法。 已知我们有一个Excel表格文件&#xff08;可以是.xls、.xlsx、.csv等多种不同的表格文件格式&#xff09;&#…