力扣LCP 33. 蓄水

news/2025/4/2 5:07:20/

LCP 33. 蓄水

给定 N 个无限容量且初始均空的水缸,每个水缸配有一个水桶用来打水,第 i 个水缸配备的水桶容量记作 bucket[i]。有以下两种操作:

升级水桶:选择任意一个水桶,使其容量增加为 bucket[i]+1
蓄水:将全部水桶接满水,倒入各自对应的水缸
每个水缸对应最低蓄水量记作 vat[i],返回至少需要多少次操作可以完成所有水缸蓄水要求。

注意:实际蓄水量 达到或超过 最低蓄水量,即完成蓄水要求。

示例 1:

输入:bucket = [1,3], vat = [6,8]

输出:4

解释:
第 1 次操作升级 bucket[0];
第 2 ~ 4 次操作均选择蓄水,即可完成蓄水要求。

分析

1.找到最低蓄水量中的最大值max。

2.首先最低蓄水量中的最大值为0的话,那么就不用蓄水返回为0.

3.如果不为0,那么就枚举蓄水的次数,蓄水次数范围是[1,max],我们需要求出每次蓄水次数操作中,每个水桶升级的次数并累加。(vat[j] + x - 1) / x - bucket[j]这段代码表示当前木桶升级的次数,本来是vat[j]/ x - bucket[j],vat[j]/ x表示每次最小水桶容量多少,减去水缸的最低蓄水量就算到了升级次数,但是vat[j]除x有小数的话,vat[j]/ x就只会要整数部分而且我们只能升级加1,而不能加小数,所有我们只能大于等于每次最小水桶容量,所以是这种形式:(vat[j] + x - 1) / x它会向上取整。

4.蓄水次数我们从1遍历到max,比较得出所有蓄水次数操作中:x+y的最小值,即是答案。(x是每次蓄水次数,y是升级的次数)

5.大致意思就是:比如是在蓄水次数为2的时候,我们需要将水桶往水缸里面倒2次水倒入的水可以大于等于水缸的最低蓄水量,要满足这个条件我们需要给一些水桶升级,将所有升级的次数累加,在加上当前的蓄水次数,就是当前的操作总和。其他次数操作相同,然后比较得出最小值吗,得出答案。

运行代码

class Solution {public int storeWater(int[] bucket, int[] vat) {int ans=1<<30;//找出最低蓄水量中最大的值int max= Arrays.stream(vat).max().getAsInt();//如果最低蓄水量之中最大的为0,那么不用蓄水if (max==0){return 0;}//枚举蓄水的次数for (int x =1; x <=max; x++) {int y=0;for (int j = 0; j <vat.length ; j++) {//每个水桶的升级次数累加y += Math.max(0, (vat[j] + x - 1) / x - bucket[j]);}//找出蓄水次数x和升级次数y和的最小值ans=Math.min(ans,x+y);}return ans;}
}

运行结果

在这里插入图片描述


http://www.ppmy.cn/news/74311.html

相关文章

速率控制(RATE control, RC)原理简介

速率控制&#xff08;RATE control, RC&#xff09; ⚫️速率控制&#xff08;RATE control, RC&#xff09;是H265中用于控制传输速率的一种技术&#xff0c;简单来说&#xff0c;就是通过对量化参数QP和拉格朗日因子lambda的控制&#xff0c;使得视频的每秒压缩后的大小尽可…

TikTok掀动出海淘金潮

嘉晟迪科&#xff1a;在各行各业都已经卷成红海的今天&#xff0c;最稀缺的是什么&#xff1f;当然是增长。那么&#xff0c;增长在哪里&#xff1f;流量在哪里&#xff0c;需求就在哪里&#xff0c;增长也就在那里。 因为短视频风靡全球的流行&#xff0c;内容平台特别是短视频…

4.1 一级存储结构

本节介绍 GPU 上的一级缓存结构&#xff0c;重点介绍统一的 L1 数据缓存和暂存器“共享内存”&#xff0c;以及它们如何与计算核心交互。 我们还简要讨论了 L1 纹理缓存的典型微架构。 我们包括对纹理缓存的讨论&#xff0c;虽然它在 GPU 计算应用程序中的使用有限&#xff0c;…

12 IO1

File类中的常用方法有哪些? 1.String getName() :获取文件名称 2.String getPath()&#xff1a;获取文件路径 3.String getAbsolutePath()&#xff1a;获取绝对路径 4.File getParentFile()&#xff1a;获取上级目录文件 5.boolean exists()&#xff1a;判断文件是否存在…

05. 数据结构之队列

前言 队列&#xff08;queue&#xff09;是一种线性数据结构&#xff0c;队列中的元素只能先入先出&#xff08;First In First Out&#xff0c;简称 FIFO&#xff09;。队列和实际生活中的排队相对应&#xff0c;是一种和生活息息相关的数据结构&#xff0c;在很多系统中都会…

VMware ESXi 6.0 多网卡接入 多网段绑定 虚机接入不同网段

网卡要与对应网段的网络联通。不同的网卡接入不同网段的网络。要为vmware esxi 6 的多个虚机配置不同网段的ip地址&#xff0c;首先选择主机对应的网口分别插上处于在不同网段的网线。 配置管理网络 多个网口接入&#xff0c;只可以配置一个管理网络&#xff0c;就是只有一个网…

干货 | 利用SPSS进行高级统计分析第一期

Hello&#xff0c;大家好&#xff01; 这里是壹脑云科研圈&#xff0c;我是喵君姐姐&#xff5e; 你是否还在为分析实验数据而感到头疼&#xff1f;你是否还在苦于自己不知道如何选择合适的模型来分析数据&#xff1f; 本期我们就来为大家带来了利用SPSS软件进行高级统计分析…

【华为OD机试真题2023B卷 JAVA】模拟消息队列

华为OD2023(B卷)机试题库全覆盖,刷题指南点这里 模拟消息队列 知识点排序 时间限制:1s 空间限制:256MB 限定语言:不限 题目描述: 让我们来模拟一个消息队列的运作,有一个发布者和若干消费者,发布者会在给定的时刻向消息队列发送消息,若此时消息队列有消费者订阅,这…