LeetCode213. House Robber II——动态规划

文章目录

    • 一、题目
    • 二、题解

一、题目

You are a professional robber planning to rob houses along a street. Each house has a certain amount of money stashed. All houses at this place are arranged in a circle. That means the first house is the neighbor of the last one. Meanwhile, adjacent houses have a security system connected, and it will automatically contact the police if two adjacent houses were broken into on the same night.

Given an integer array nums representing the amount of money of each house, return the maximum amount of money you can rob tonight without alerting the police.

Example 1:

Input: nums = [2,3,2]
Output: 3
Explanation: You cannot rob house 1 (money = 2) and then rob house 3 (money = 2), because they are adjacent houses.
Example 2:

Input: nums = [1,2,3,1]
Output: 4
Explanation: Rob house 1 (money = 1) and then rob house 3 (money = 3).
Total amount you can rob = 1 + 3 = 4.
Example 3:

Input: nums = [1,2,3]
Output: 3

Constraints:

1 <= nums.length <= 100
0 <= nums[i] <= 1000

二、题解

class Solution {
public:int rob(vector<int>& nums) {int n = nums.size();if(n == 1) return nums[0];return max(best(nums,1,n-1),nums[0] + best(nums,2,n-2));}int best(vector<int>& nums,int l,int r){if(l > r) return 0;if(l == r) return nums[l];if(l + 1 == r) return max(nums[l],nums[r]);int prepre = nums[l],pre = max(nums[l],nums[l + 1]);for(int i = l + 2;i <= r;i++){int cur = max(pre,nums[i] + max(prepre,0));prepre = pre;pre = cur;}return pre;}
};

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

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

相关文章

IO进程线程day3作业

1、使用 fread 和 fwrite 完成文件拷贝 代码&#xff1a; #include<myhead.h> int main(int argc, const char *argv[]) {//判断终端输入if(argc!3){printf("inputs file error\n");printf("usage:./a.out srcfile destfile\n");return -1;}//定义…

【C->Cpp】由C迈向Cpp(3)

正文开始&#xff1a; 目录 &#xff08;一&#xff09;函数重载 &#xff08;1&#xff09;函数重载 &#xff08;2&#xff09;函数重载实现原理 &#xff08;二&#xff09; 引用 &#xff08;1&#xff09;引用 &#xff08;2&#xff09;语法 i &#xff0c;别名&am…

使用openeuler 22.03替代CentOS 7.9,建立虚拟机详细步骤

进入浏览器搜索网址下载openeuler 22.03镜像文件 https://mirrors.huaweicloud.com/openeuler/openEuler-22.03-LTS-SP3/ISO/x86_64/openEuler-22.03-LTS-SP3-x86_64-dvd.iso 打开VMware Workstation新建一个虚拟机&#xff1a; 自定义虚拟机位置 加入下载好的openeuler镜像文件…

嵌入式学习第十八天(目录IO)

目录IO: 1. mkdir int mkdir(const char *pathname, mode_t mode); 功能&#xff1a;创建目录文件 参数&#xff1a; pathname&#xff1a;文件路径 mode&#xff1a;文件的权限 rwx rwx rwx 111 111 111 0 7 7 7 r&#xff1a;目录中是否能够查看文件 w&#xff1a;目…

AMD FPGA设计优化宝典笔记(5)低频全局复位与高扇出

亚军老师的这本书《AMD FPGA设计优化宝典》&#xff0c;他主要讲了两个东西&#xff1a; 第一个东西是代码的良好风格&#xff1b; 第二个是设计收敛等的本质。 这个书的结构是一个总论&#xff0c;加上另外的9个优化&#xff0c;包含的有&#xff1a;时钟网络、组合逻辑、触发…

关于React中的状态和属性

在React中&#xff0c;状态&#xff08;State&#xff09;和属性&#xff08;Props&#xff09;是两个核心概念&#xff0c;用于管理组件的数据和传递信息。下面详细描述它们的区别&#xff1a; 状态&#xff08;State&#xff09;&#xff1a; 定义&#xff1a; 状态是组件内部…

面向对象 设计原则

0 引言 单一职责原则&#xff1a;类应该只有一个改变的理由&#xff1b; 开放-封闭原则&#xff1a;类应该对扩展开放&#xff0c;对修改关闭&#xff1b; 迪米特原则&#xff1a;只和朋友交谈&#xff1b; 里氏替换原则&#xff1a;子类可以扩展父类的功能&#xff0c;但不能…

5.14 BCC工具之vfsreadlat.py解读

一,工具简介 vfsreadlat.py工具用于跟踪VFS读取延迟分布情况,示例的运行结果是一个函数延迟分布直方图。 二,代码示例 #!/usr/bin/python# USAGE: vfsreadlat.py [interval [count]] # # The default interval is 5 seconds. A Ctrl-C will print the partially # gathere…

RocketMQ—RocketMQ消息重复消费问题

RocketMQ—RocketMQ消息重复消费问题 重复消费问题的描述 什么情况下会发生重复消费的问题&#xff1a; 生产者多次投递消息&#xff1a;如果生产者发送消息时&#xff0c;连接有延迟&#xff0c;MQ还没收到消息&#xff0c;生产者又发送了一次消息&#xff1b; 消费者方扩容…

「Python系列」Python函数

文章目录 一、Python函数函数的组成部分&#xff1a;调用函数&#xff1a;变量作用域&#xff1a;默认参数和可变参数&#xff1a; 二、匿名函数&#xff08;Lambda函数&#xff09;三、相关链接 一、Python函数 Python函数是组织代码的一种方式&#xff0c;它允许你定义可重用…

洛谷 8599.带分数

这道题其实是蓝桥杯的一道真题&#xff0c;其实这题看似很难解&#xff0c;但是如果稍加点化&#xff0c;其实很简单。 思路&#xff1a;因为我们需要选择1-9的数字来组成可以按照题目要求计算成目标数的形式&#xff0c;而且只有一次选用。那么&#xff0c;我们可以想&#x…

SEO优化对服务器有影响吗

SEO优化对服务器有影响吗 SEO优化也就是搜索引擎优化&#xff0c;简单的理解就是利用搜索引擎的规则来提高自己网站在搜索引擎上的自然排名。那么究竟服务器对于SEO优化是否有影响呢&#xff1f;SEO优化对服务器的选择有没有什么要求&#xff1f;服务器对SEO优化有什么影响&…

Docker命令实战

文章目录 一、Docker常用命令-图谱二、基础实战命令2.1、查找镜像2.2、启动容器2.3、修改容器内容2.3.1、进入容器内部修改2.3.2、挂载数据到外部修改 2.4、提交改变2.5、镜像传输--将镜像保存成压缩包2.6、两台主机间压缩文件的传输拷贝2.7、推送阿里云个人远程镜像仓库2.8、其…

【水文】计算并输出1到100之间所有质数的和

#include <stdio.h> #include <stdbool.h> // 函数声明 bool isPrime(int num); int main() { int sum 0; printf("1到100之间的质数有&#xff1a;\n"); for (int i 2; i < 100; i) { if (isPrime(i)) { printf("%…

CentOS7与Ubuntu防火墙管理命令操作总结

CentOS7与Ubuntu防火墙管理命令操作总结 CentOS7启动、停止和重启防火墙置默认区域查看防火墙状态和规则添加和删除规则重新加载和永久生效配置 Ubuntu防火墙管理操作安装和启用ufw验证ufw状态管理操作配置ufw规则删除和禁用规则 CentOS7 在CentOS7上&#xff0c;默认使用firew…

Nodejs 第三十九章(knex)

knex Knex是一个基于JavaScript的查询生成器&#xff0c;它允许你使用JavaScript代码来生成和执行SQL查询语句。它提供了一种简单和直观的方式来与关系型数据库进行交互&#xff0c;而无需直接编写SQL语句。你可以使用Knex定义表结构、执行查询、插入、更新和删除数据等操作。…

SQL110 插入记录(一)(插入和interval关键字的用法)

代码 insert into exam_record(uid,exam_id,start_time,submit_time,score) values(1001,9001,2021-09-01 22:11:12,2021-09-01 22:11:12interval 50 minute,90), (1002,9002,2021-09-04 07:01:02,null,null)知识点 interval关键字的用法 INTERVAL关键字一般使用格式为&#x…

Python爬虫之Splash负载均衡配置

爬虫专栏&#xff1a;http://t.csdnimg.cn/WfCSx Splash基础&#xff1a;Python爬虫之Splash详解-CSDN博客 用 Splash 做页面抓取时&#xff0c;如果爬取的量非常大&#xff0c;任务非常多&#xff0c;用一个 Splash 服务来处理的话&#xff0c;未免压力太大了&#xff0c;此…

【Linux 内核源码分析】内存映射(mmap)机制原理

内存映射(mmap)是 Linux 内核的一个重要机制&#xff0c;它为程序提供了一种将文件内容直接映射到进程虚拟地址空间的方式。同时内存映射也是虚拟内存管理和文件 IO 的重要组成部分。 在 Linux 中&#xff0c;虚拟内存管理是基于内存映射来实现的。在调用 mmap 函数时&#xf…

一篇博客教会你使用node多版本管理

文章目录 nvm 简介nvm 安装nvm 使用配置国内镜像显示可以安装的 nodejs安装 nodejs显示已安装的 nodejs切换 nodejs nvm 简介 nvm&#xff08;Node Version Manager&#xff09;是 node.js 的版本管理器&#xff0c;可以让我们轻松地在不同的 node.js 版本之间进行切换。 今天…