LeetCode 2105. 给植物浇水 II(双指针)

文章目录

    • 1. 题目
    • 2. 解题

1. 题目

Alice 和 Bob 打算给花园里的 n 株植物浇水。
植物排成一行,从左到右进行标记,编号从 0 到 n - 1 。其中,第 i 株植物的位置是 x = i 。

每一株植物都需要浇特定量的水。
Alice 和 Bob 每人有一个水罐,最初是满的 。他们按下面描述的方式完成浇水:

  • Alice 按 从左到右 的顺序给植物浇水,从植物 0 开始。
  • Bob 按 从右到左 的顺序给植物浇水,从植物 n - 1 开始。他们 同时 给植物浇水。
  • 如果没有足够的水 完全 浇灌下一株植物,他 / 她会立即重新灌满浇水罐。
  • 不管植物需要多少水,浇水所耗费的时间都是一样的。
  • 不能 提前重新灌满水罐。
  • 每株植物都可以由 Alice 或者 Bob 来浇水。
  • 如果 Alice 和 Bob 到达同一株植物,那么当前水罐中水更多的人会给这株植物浇水。如果他俩水量相同,那么 Alice 会给这株植物浇水。

给你一个下标从 0 开始的整数数组 plants ,数组由 n 个整数组成。其中,plants[i] 为第 i 株植物需要的水量。
另有两个整数 capacityA 和 capacityB 分别表示 Alice 和 Bob 水罐的容量。返回两人浇灌所有植物过程中重新灌满水罐的 次数

示例 1:
输入:plants = [2,2,3,3], capacityA = 5, capacityB = 5
输出:1
解释:
- 最初,Alice 和 Bob 的水罐中各有 5 单元水。
- Alice 给植物 0 浇水,Bob 给植物 3 浇水。
- Alice 和 Bob 现在分别剩下 3 单元和 2 单元水。
- Alice 有足够的水给植物 1 ,所以她直接浇水。Bob 的水不够给植物 2 ,所以他先重新装满水,再浇水。
所以,两人浇灌所有植物过程中重新灌满水罐的次数 = 0 + 0 + 1 + 0 = 1 。示例 2:
输入:plants = [2,2,3,3], capacityA = 3, capacityB = 4
输出:2
解释:
- 最初,Alice 的水罐中有 3 单元水,Bob 的水罐中有 4 单元水。
- Alice 给植物 0 浇水,Bob 给植物 3 浇水。
- Alice 和 Bob 现在都只有 1 单元水,并分别需要给植物 1 和植物 2 浇水。
- 由于他们的水量均不足以浇水,所以他们重新灌满水罐再进行浇水。
所以,两人浇灌所有植物过程中重新灌满水罐的次数 = 0 + 1 + 1 + 0 = 2 。示例 3:
输入:plants = [5], capacityA = 10, capacityB = 8
输出:0
解释:
- 只有一株植物
- Alice 的水罐有 10 单元水,Bob 的水罐有 8 单元水。因此 Alice 的水罐中水更多,她会给这株植物浇水。
所以,两人浇灌所有植物过程中重新灌满水罐的次数 = 0 。示例 4:
输入:plants = [1,2,4,4,5], capacityA = 6, capacityB = 5
输出:2
解释:
- 最初,Alice 的水罐中有 6 单元水,Bob 的水罐中有 5 单元水。
- Alice 给植物 0 浇水,Bob 给植物 4 浇水。
- Alice 和 Bob 现在分别剩下 5 单元和 0 单元水。
- Alice 有足够的水给植物 1 ,所以她直接浇水。Bob 的水不够给植物 3 ,所以他先重新装满水,再浇水。
- Alice 和 Bob 现在分别剩下 3 单元和 1 单元水。
- 由于 Alice 的水更多,所以由她给植物 2 浇水。然而,她水罐里的水不够给植物 2 ,所以她先重新装满水,再浇水。 
所以,两人浇灌所有植物过程中重新灌满水罐的次数 = 0 + 0 + 1 + 1 + 0 = 2 。示例 5:
输入:plants = [2,2,5,2,2], capacityA = 5, capacityB = 5
输出:1
解释:
Alice 和 Bob 都会到达中间的植物,并且此时他俩剩下的水量相同,所以 Alice 会给这株植物浇水。
由于她到达时只剩下 1 单元水,所以需要重新灌满水罐。
这是唯一一次需要重新灌满水罐的情况。
所以,两人浇灌所有植物过程中重新灌满水罐的次数 = 1 。提示:
n == plants.length
1 <= n <= 10^5
1 <= plants[i] <= 10^6
max(plants[i]) <= capacityA, capacityB <= 10^9

来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/watering-plants-ii
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

2. 解题

  • 双指针分别置于 0,n-1 向中间同步遍历
class Solution {
public:int minimumRefill(vector<int>& plants, int capacityA, int capacityB) {int ans = 0, i = 0, j = plants.size()-1;int wa = capacityA, wb = capacityB;while(i <= j){if(i < j){if(wa < plants[i]){wa = capacityA;ans++;}if(wb < plants[j]){wb = capacityB;ans++;}}else if(max(wa, wb) < plants[i]) ans++;wa -= plants[i];wb -= plants[j];i++,j--;}return ans;}
};

132 ms 76.3 MB C++


我的CSDN博客地址 https://michael.blog.csdn.net/

长按或扫码关注我的公众号(Michael阿明),一起加油、一起学习进步!
Michael阿明

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

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

相关文章

通过Cisco packet Tracer 划分vlan实现不同交换机间pc进行通信

通过Cisco packet Tracer 划分vlan实现不同交换机间pc进行通信 交换机端口类型介绍&#xff1a; vlan 1.命令行实现将端口 fa0/4 fa0/5 fa0/6分配到vlan3: 2.命令行实现两个交换机模式由access切换为trunk,使得不同交换机中相同vlan中的PC能够进行通信

Supervised Convolutional Neural Network

Stanford计算机系的官方tutorial&#xff0c;Andrew Ng执笔 Supervised Convolutional Neural Network http://ufldl.stanford.edu/tutorial/supervised/FeatureExtractionUsingConvolution/ 要用到的数据 http://yann.lecun.com/exdb/mnist/ 注意&#xff1a;打开的数据名与…

linux xp镜像文件,让Windows XP镜像文件小一点儿(转)

让Windows XP镜像文件小一点儿(转)[more]近日笔者的一位朋友遇上件烦心事儿&#xff0c;他发现安装好Windows XP Professional和Services Pack 1a补丁升级文件后&#xff0c;其文件大小总和已达到1.7GB容量。而用Ghost备份后的lmage镜像文件也有1.2GB之大&#xff0c;不能将它储…

Packet Tracer配置交换机详细步骤(实验)

1.首先建立如下图所示的网络拓扑结构 这里需要注意 PC 与 交换机switch交换机之间的连线方式&#xff1a; 1&#xff09;连线方式选择 控制台连线 2&#xff09;switch 中需要选择 console接口&#xff1b; 3&#xff09;PC 中需要选择 RS 232接口 2.点击PC -> 选择桌面 -…

LeetCode 2108. 找出数组中的第一个回文字符串

文章目录1. 题目2. 解题1. 题目 给你一个字符串数组 words &#xff0c;找出并返回数组中的 第一个回文字符串 。如果不存在满足要求的字符串&#xff0c;返回一个 空字符串 “” 。 回文字符串 的定义为&#xff1a;如果一个字符串正着读和反着读一样&#xff0c;那么该字符…

Eclipse用法和技巧二十三:查看JDK源码

使用java开发&#xff0c;如果能阅读JDK的经典代码&#xff0c;对自己的水平提高是很有帮助的。笔者在实际工作中总结了两种阅读JDK源码的方式。第一种下载android源代码&#xff0c;直接在android源码代码中&#xff0c;这里的代码虽然不是标准的JDK源码&#xff0c;但是也很不…

pip install 时报错 ERROR: Could not install packages due to an EnvironmentError: [WinError 5] 拒绝访问(已解决)

pip install 时报错 ERROR: Could not install packages due to an EnvironmentError: [WinError 5] 拒绝访问&#xff08;已解决&#xff09; 这是报错截图&#xff1a; 解决方案如下&#xff1a; 在pip install 后面加上 --user 需要安装的包名 例如&#xff1a; pip inst…

linux取消中文网,SELinux如何关闭

SELinux如何关闭1、临时关闭SELinuxsetenforce 0 ##设置SELinux 成为permissive模式##setenforce 1 设置SELinux 成为enforcing模式2、永久关闭SELinux修改/etc/selinux/config 文件将SELINUXenforcing改为SELINUXdisabled&#xff0c;重启机器。3、查看SELinux状态◆ /usr/sbi…

LeetCode 2109. 向字符串添加空格

文章目录1. 题目2. 解题1. 题目 给你一个下标从 0 开始的字符串 s &#xff0c;以及一个下标从 0 开始的整数数组 spaces 。 数组 spaces 描述原字符串中需要添加空格的下标。每个空格都应该插入到给定索引处的字符值 之前 。 例如&#xff0c;s "EnjoyYourCoffee&quo…

炒房客共识:深圳楼市要撑不住了

10月11日&#xff0c;深圳气温不足20度。位于罗湖区“锦缘里”项目首次开盘&#xff0c;与此前几个月深圳开盘疯狂的场景不同&#xff0c;这个准备了5年的楼盘首期推出100多套精装房&#xff0c;但却只吸引了上百个带着客户的中介&#xff0c;现场中介多过购房者&#xff0c;这…

Packet Tracer 通过配置静态路由实现不同网段之间的通信(详细步骤)

Packet Tracer 通过配置静态路由实现不同网段之间的通信&#xff08;详细步骤&#xff09; 一、目标&#xff1a;ping通四个网段 二、解决方法&#xff1a;配置静态路由 1.拓扑结构布线图如下所示&#xff1a; 注意&#xff1a;这里省略了为每台PC配置IP地址 和 相对应的默认…

关于二叉树的程序 c语言,请教关于建立二叉树程序(c语言的)

dsd。cppC:Documents and SettingsAdministrator桌面dsd。cpp(21) : error C2664: Init : cannot convert parameter 1 from struct node * to Tree *Types pointed to are unrelated; conversion requires reinterpret_cast, C-style cast or function-style castC:Documents …

LeetCode 2110. 股票平滑下跌阶段的数目(滑动窗口)

文章目录1. 题目2. 解题1. 题目 给你一个整数数组 prices &#xff0c;表示一支股票的历史每日股价&#xff0c;其中 prices[i] 是这支股票第 i 天的价格。 一个 平滑下降的阶段 定义为&#xff1a;对于 连续一天或者多天 &#xff0c;每日股价都比 前一日股价恰好少 1 &…

教你遇事最有水平的处理方法

1 、学会沉默&#xff08;如果他只是想拿你撒气&#xff09; 有时候&#xff0c;你被人误解&#xff0c;你不想争辩&#xff0c;所以选择沈默。本来就不是所有的人都得了解你&#xff0c;因此你认为不必对全世界喊话。却也有时候&#xff0c;你被最爱的人误解&#xff0c;你难过…

JavaScript + Audio API自制简易音乐播放器(详细完整版、小白都能看懂)

JavaScript Audio API自制简易音乐播放器&#xff08;详细完整版&#xff09; ** 音乐播放器的功能清单如下&#xff1a; ** 1.点击暂停按钮&#xff0c;歌曲暂停 2.点击播放按钮&#xff0c;歌曲播放 3.单曲循环与取消单曲循环 4.当播放到列表最后一首歌曲时&#xff0c;点…

C语言成绩统计摘要,C语言学生信息管理系统(完整版)摘要.docx

电子科技大学成都学院程序综合设计论文论文题目 学生信息管理系统 学生姓名 魏国 学 号 1340840625 专  业 机械设计制造及其自动化 系(分院) 电子工程系 授课教师 杜娥2015年12月制摘要随着经济的发展&#xff0c;社会的进步&#xff0c;计算机越来越深入到我们日常的工作学…

安装 paddleocr 报错 gcc: error trying to exec ‘cc1‘: execvp: 没有那个文件或目录

安装 paddleocr pip install paddleocr -i https://pypi.tuna.tsinghua.edu.cn/simple报错 creating build/temp.linux-x86_64-3.8 creating build/temp.linux-x86_64-3.8/Levenshtein gcc -pthread -B /opt/bdp/data01/anaconda3/envs/pp21/compiler_compat -Wl,--sysroot/ …

软件工程项目之摄影App

摄影app 开发人员&#xff1a;Ives & Dyh 开发功能&#xff1a; 摄影师注册与认证&#xff0c;为年轻摄影师提供成长的空间&#xff0c;发挥一技之长的平台。用户注册与验证&#xff0c;为有摄影需求的人提供选择摄影师进行个性化拍摄的平台。用户与摄影师的拍摄预约。订单…

jQuery实现PC端商城购物车模块基本功能(每个商品的小计和合计都会根据添加和删除的操作来动态计算)

jQuery实现PC端商城购物车模块基本功能 先上效果图&#xff1a; 因为主要是想练习jQuery的使用&#xff0c;所以页面CSS部分比较简陋&#xff0c;有需要的话&#xff0c;大家在参考代码时&#xff0c;可以自己再完善下CSS部分的代码&#xff0c;让购物车页面更加美观。 功能…

c语言 define 关键字,c语言中define的一个不常见的用法

一个开源的x86模拟器中的键盘宏我看不懂对应的代码&#xff0c;我只知道最终的宏_KEY_button这种形式的枚举&#xff0c;比如_KEY_ESCAPE对应的值是1&#xff0c;但是对于这个宏是怎么得出来的不懂&#xff0c;具体来说&#xff0c;第一行中#define _KEYS(_)括号中的_代表什么意…