【C++贪心】2086. 喂食仓鼠的最小食物桶数|1622
本文涉及知识点
C++贪心
LeetCode2086. 喂食仓鼠的最小食物桶数
给你一个下标从 0 开始的字符串 hamsters ,其中 hamsters[i] 要么是:
‘H’ 表示有一个仓鼠在下标 i ,或者’.’ 表示下标 i 是空的。
你将要在空的位置上添加一定数量的食物桶来喂养仓鼠。如果仓鼠的左边或右边至少有一个食物桶,就可以喂食它。更正式地说,如果你在位置 i - 1 或者 i + 1 放置一个食物桶,就可以喂养位置为 i 处的仓鼠。
在 空的位置 放置食物桶以喂养所有仓鼠的前提下,请你返回需要的 最少 食物桶数。如果无解请返回 -1 。
示例 1:

输入:hamsters = “H…H”
输出:2
解释:
我们可以在下标为 1 和 2 处放食物桶。
可以发现如果我们只放置 1 个食物桶,其中一只仓鼠将得不到喂养。
示例 2:

输入:street = “.H.H.”
输出:1
解释:
我们可以在下标为 2 处放置一个食物桶。
示例 3:
输入:street = “.HHH.”
输出:-1
解释:
如果我们如图那样在每个空位放置食物桶,下标 2 处的仓鼠将吃不到食物。
提示:
1 <= hamsters.length <= 105
hamsters[i] 要么是 ‘H’ ,要么是 ‘.’ 。
C++贪心
对于最左边的仓鼠,左边和右边一定要放食物。右边放食物不劣于左边,右边的食物可能共用,左边的一定不能共用。处理完最左的仓鼠后,移除最左的仓鼠。问题由f(n)变成f(n-1)。
枚举仓鼠,忽略食物和空地。
如果左边有食物,处理结束。
如果右边有空位,则在右边放食物,处理结束。
如果有左边有空位,则在左边放食物,处理结束。
否则返回-1。
h[i]=‘x’,表示放食物。
避免处理边界问题,s的左右各加’.'。
统计x的数量。
不能前后加’.',加之前"H"无解,加之后有解“xHx"。
代码
核心代码
class Solution {public:int minimumBuckets(string hamsters) {for (int i = 0; i < hamsters.length(); i++) {if ('H' != hamsters[i]) { continue; }if ((i > 0) && ('x' == hamsters[i - 1])) { continue; }if((i+1 < hamsters.length())&& ('x' == hamsters[i + 1])) { continue; }if ((i + 1 < hamsters.length()) && ('.' == hamsters[i + 1])) { hamsters[i + 1] = 'x'; continue; }if ((i > 0) && ('.' == hamsters[i - 1])) { hamsters[i - 1] = 'x'; continue; }return -1;}return count(hamsters.begin(), hamsters.end(), 'x');}};
单元测试
string hamsters;TEST_METHOD(TestMethod11){hamsters = "H..H";auto res = Solution().minimumBuckets(hamsters);AssertEx(2,res);}TEST_METHOD(TestMethod12){hamsters = ".H.H.";auto res = Solution().minimumBuckets(hamsters);AssertEx(1, res);}TEST_METHOD(TestMethod13){hamsters = ".HHH.";auto res = Solution().minimumBuckets(hamsters);AssertEx(-1, res);}TEST_METHOD(TestMethod14){hamsters = "H";auto res = Solution().minimumBuckets(hamsters);AssertEx(-1, res);}

扩展阅读
| 我想对大家说的话 |
|---|
| 工作中遇到的问题,可以按类别查阅鄙人的算法文章,请点击《算法与数据汇总》。 |
| 学习算法:按章节学习《喜缺全书算法册》,大量的题目和测试用例,打包下载。重视操作 |
| 有效学习:明确的目标 及时的反馈 拉伸区(难度合适) 专注 |
| 闻缺陷则喜(喜缺)是一个美好的愿望,早发现问题,早修改问题,给老板节约钱。 |
| 子墨子言之:事无终始,无务多业。也就是我们常说的专业的人做专业的事。 |
| 如果程序是一条龙,那算法就是他的是睛 |
| 失败+反思=成功 成功+反思=成功 |
视频课程
先学简单的课程,请移步CSDN学院,听白银讲师(也就是鄙人)的讲解。
https://edu.csdn.net/course/detail/38771
如何你想快速形成战斗了,为老板分忧,请学习C#入职培训、C++入职培训等课程
https://edu.csdn.net/lecturer/6176
测试环境
操作系统:win7 开发环境: VS2019 C++17
或者 操作系统:win10 开发环境: VS2022 C++17
如无特殊说明,本算法用**C++**实现。

相关文章:
【C++贪心】2086. 喂食仓鼠的最小食物桶数|1622
本文涉及知识点 C贪心 LeetCode2086. 喂食仓鼠的最小食物桶数 给你一个下标从 0 开始的字符串 hamsters ,其中 hamsters[i] 要么是: ‘H’ 表示有一个仓鼠在下标 i ,或者’.’ 表示下标 i 是空的。 你将要在空的位置上添加一定数量的食物桶…...
notepad++中实现代码整体缩进和退格
我 | 在这里 ⭐ 全栈开发攻城狮、全网10W粉丝、2022博客之星后端领域Top1、专家博主。 🎓擅长 指导毕设 | 论文指导 | 系统开发 | 毕业答辩 | 系统讲解等。已指导60位同学顺利毕业 ✈️个人公众号:乡下小哥编程。回复 Java全套视频教程 或 前端全套视频教…...
如何调整配置请款单上的立账条件
顾问配置的立账条件取的是供应商档案里面的参数。与实际需求是不相匹配的。采购员商谈的立账条件经常是变化的。 措施:修改模板中立几账条件的OQL语句。 如下: select UFIDA::U9::AP::APBill::APBillHead.APBillLines.AccrueTerm.Name as 立账条件_名…...
骨传导耳机精选:2024最佳骨传导耳机有哪些?分享骨传导耳机top5
随着健康意识的普及,越来越多的人开始注重运动健身,并将音乐作为运动时的重要伴侣。然而,传统耳机在运动时易脱落且不易清洁的问题,给健身爱好者们带来了不少困扰。幸运的是,骨传导耳机的出现为这一问题提供了解决方案…...
for循环与webAPI练习题
爱太容易了,让爱维持才是最困难的部分 文章目录 for循环练习题webAPI练习题 for循环练习题 练习1:计算1-100的和 let sum 0for (let i 1; i < 100; i) {sum i}console.log(sum)练习2:将1-100之间所有是6的倍数的数字输出到控制台 for …...
FLUX | 轻松掌握FLUX.1 LoRA本地训练秘籍!
在数字艺术和创意领域,FLUX以其独特的虚实结合技术,已经成为艺术家和设计师们手中的利器。今天,我们激动地宣布,FLUX推出了一款全新的FLUX.1版本,它将LoRA本地训练技术完美融合,为用户提供了更加便捷和高效…...
LeetCode 每日一题 最小元素和最大元素的最小平均值
最小元素和最大元素的最小平均值 你有一个初始为空的浮点数数组 averages。另给你一个包含 n 个整数的数组 nums,其中 n 为偶数。 你需要重复以下步骤 n / 2 次: 从 nums 中移除 最小 的元素 minElement 和 最大 的元素 maxElement。 将 (minElement ma…...
PHP学习记录-编辑器推荐和本地环境的安装
文章目录 一,编辑器首推VSCode1,vscode2,PHPStorm 二,PHP环境搭建1,下载安装2,使用phpstudy创建站点3,答疑解惑 一,编辑器首推VSCode 1,vscode 对于PHP新手来说&#x…...
嵌套div导致子区域margin失效问题解决
嵌套div导致子区域margin失效问题解决 现象原因解决方法 现象 <div class"prev"></div> <div class"parent"><div class"child"></div><div class"child"></div> </div> <div cl…...
搭建app业务的服务器优势类型用途等
APP服务器的服务类型有哪些 APP服务器主要包括API服务器、数据库服务器、Web服务器等。API服务器可以提供登录、注册、查询、更新等各种API服务,为APP提供更方便的功能;数据库服务器可以存储APP数据,访问更快、更安全;Web服务器可…...
基于Springboot+Vue的个性化推荐影院(含源码数据库)
1.开发环境 开发系统:Windows10/11 架构模式:MVC/前后端分离 JDK版本: Java JDK1.8 开发工具:IDEA 数据库版本: mysql5.7或8.0 数据库可视化工具: navicat 服务器: SpringBoot自带 apache tomcat 主要技术: Java,Springboot,mybatis,mysql,vue 2.视频演示地址 3.功能 这个系…...
SpringMVC后台控制端校验-表单验证深度分析与实战优化
前言 在实战开发中,数据校验也是十分重要的环节之一,数据校验大体分为三部分: 前端校验后端校验数据库校验 本文讲解如何在后端控制端进行表单校验的工作 案例实现 在进行项目开发的时候,前端(jquery-validate),后端,数据库都要进行相关的数据…...
Codeforces Round 770 (Div. 2)
比赛链接:Dashboard - Codeforces Round 770 (Div. 2) - Codeforces A. Reverse and Concatenate 题意: 思路: 假设 s "abba" 经过1次操作后 -> "abbaabba" s "abcd" 经过一次操作后 -> "abcd…...
ProteinMPNN中蛋白质特征提取
函数 featurize 的主要作用是将一批蛋白质序列和结构信息转化为深度学习模型可以接受的特征矩阵。它在处理蛋白质多链结构(即多个链的蛋白质复合体)时,考虑了可见链和被掩码链的区分。 代码: import torch import numpy as np import csv import time import os import r…...
Word中如何删除表格下一页的空白页
Reference: [1] Word空白页怎么都删除不掉?用这6个方法随便删! - 知乎 (zhihu.com)...
RabbitMQ 如何保证消息不丢失?
为了保证消息在 RabbitMQ 中不丢失,必须从生产者、Exchange 路由、Broker 和消费者等多个方面采取有效措施。RabbitMQ 消息丢失的场景主要分为以下三种情况:生产者端、路由过程以及消费者端。 一、RabbitMQ 消息丢失的三种情况 在讨论如何保证消息不丢…...
Oracle或者PL/SQL导入pde文件
目录 pde文件使用pl/sql developer的 tools-> import tables-> pl/sql developer来导入;...
【QAMISRA】解决导入commands.json时报错问题
【更多软件使用问题请点击亿道电子官方网站】 1、 文档目标 解决导入commands.json时报错“Could not obtain system-wide includes and defines”的问题。 2、 问题场景 客户导入commands.json时报错“Could not obtain system-wide includes and defines”。 3、软硬件环境…...
影刀RPA实战番外:excel函数应用指南
Excel函数是用于执行特定计算、分析和数据处理任务的预定义公式。它们可处理数学计算、文本处理、逻辑判断、日期和时间运算、查找和引用数据等。例如,SUM函数可以计算一系列数字的总和,IF函数进行逻辑测试,VLOOKUP函数在表格中查找数据&…...
php生成PDF文件(FPDF)
FPDF即“Free PDF”,FPDF类库提供了基本的PDF创建功能,其源代码和使用权是免费的。 PDF格式文档优势 通用:PDF文档在UNIX和Windows系统均可正常使用。 安全:PDF文档可设置为只读模式,并且可以添加密码等保护措施。 美…...
ubuntu搭建nfs服务centos挂载访问
在Ubuntu上设置NFS服务器 在Ubuntu上,你可以使用apt包管理器来安装NFS服务器。打开终端并运行: sudo apt update sudo apt install nfs-kernel-server创建共享目录 创建一个目录用于共享,例如/shared: sudo mkdir /shared sud…...
ETLCloud可能遇到的问题有哪些?常见坑位解析
数据集成平台ETLCloud,主要用于支持数据的抽取(Extract)、转换(Transform)和加载(Load)过程。提供了一个简洁直观的界面,以便用户可以在不同的数据源之间轻松地进行数据迁移和转换。…...
分布式增量爬虫实现方案
之前我们在讨论的是分布式爬虫如何实现增量爬取。增量爬虫的目标是只爬取新产生或发生变化的页面,避免重复抓取,以节省资源和时间。 在分布式环境下,增量爬虫的实现需要考虑多个爬虫节点之间的协调和去重。 另一种思路:将增量判…...
dify打造数据可视化图表
一、概述 在日常工作和学习中,我们经常需要和数据打交道。无论是分析报告、项目展示,还是简单的数据洞察,一个清晰直观的图表,往往能胜过千言万语。 一款能让数据可视化变得超级简单的 MCP Server,由蚂蚁集团 AntV 团队…...
Pinocchio 库详解及其在足式机器人上的应用
Pinocchio 库详解及其在足式机器人上的应用 Pinocchio (Pinocchio is not only a nose) 是一个开源的 C 库,专门用于快速计算机器人模型的正向运动学、逆向运动学、雅可比矩阵、动力学和动力学导数。它主要关注效率和准确性,并提供了一个通用的框架&…...
【Redis】笔记|第8节|大厂高并发缓存架构实战与优化
缓存架构 代码结构 代码详情 功能点: 多级缓存,先查本地缓存,再查Redis,最后才查数据库热点数据重建逻辑使用分布式锁,二次查询更新缓存采用读写锁提升性能采用Redis的发布订阅机制通知所有实例更新本地缓存适用读多…...
uniapp手机号一键登录保姆级教程(包含前端和后端)
目录 前置条件创建uniapp项目并关联uniClound云空间开启一键登录模块并开通一键登录服务编写云函数并上传部署获取手机号流程(第一种) 前端直接调用云函数获取手机号(第三种)后台调用云函数获取手机号 错误码常见问题 前置条件 手机安装有sim卡手机开启…...
HTML前端开发:JavaScript 获取元素方法详解
作为前端开发者,高效获取 DOM 元素是必备技能。以下是 JS 中核心的获取元素方法,分为两大系列: 一、getElementBy... 系列 传统方法,直接通过 DOM 接口访问,返回动态集合(元素变化会实时更新)。…...
协议转换利器,profinet转ethercat网关的两大派系,各有千秋
随着工业以太网的发展,其高效、便捷、协议开放、易于冗余等诸多优点,被越来越多的工业现场所采用。西门子SIMATIC S7-1200/1500系列PLC集成有Profinet接口,具有实时性、开放性,使用TCP/IP和IT标准,符合基于工业以太网的…...
C++_哈希表
本篇文章是对C学习的哈希表部分的学习分享 相信一定会对你有所帮助~ 那咱们废话不多说,直接开始吧! 一、基础概念 1. 哈希核心思想: 哈希函数的作用:通过此函数建立一个Key与存储位置之间的映射关系。理想目标:实现…...
