首页 > 其他分享 >2335.装满杯子所需要的最短时长

2335.装满杯子所需要的最短时长

时间:2023-06-14 09:24:51浏览次数:36  
标签:2335 max 冷水 装满 一杯 温水 amount 短时

问题描述

2335. 装满杯子需要的最短总时长 (Easy)

现有一台饮水机,可以制备冷水、温水和热水。每秒钟,可以装满 2不同 类型的水或者 1 杯任意类型的水。 给你一个下标从 0 开始、长度为 3 的整数数组 amount ,其中 amount[0]amount[1]amount[2] 分别表示需要装满冷水、温水和热水的杯子数量。返回装满所有杯子所需的 最少 秒数。 示例 1:

输入:amount = [1,4,2]
输出:4
解释:下面给出一种方案:
第 1 秒:装满一杯冷水和一杯温水。
第 2 秒:装满一杯温水和一杯热水。
第 3 秒:装满一杯温水和一杯热水。
第 4 秒:装满一杯温水。
可以证明最少需要 4 秒才能装满所有杯子。

示例 2:

输入:amount = [5,4,4]
输出:7
解释:下面给出一种方案:
第 1 秒:装满一杯冷水和一杯热水。
第 2 秒:装满一杯冷水和一杯温水。
第 3 秒:装满一杯冷水和一杯温水。
第 4 秒:装满一杯温水和一杯热水。
第 5 秒:装满一杯冷水和一杯热水。
第 6 秒:装满一杯冷水和一杯温水。
第 7 秒:装满一杯热水。

示例 3:

输入:amount = [5,0,0]
输出:5
解释:每秒装满一杯冷水。

提示:

  • amount.length == 3
  • 0 <= amount[i] <= 100

解题思路

记冷水、温水、热水中所需的最多杯子数量为max,最少的为min,另一个为mid

如果max >= mid + min,那么结果就是max

如果max < mid + min,那么设mid中取a次和max配对,min中取b次和max配对,a + b = max ,mid - a = min - b,结果为max + mid - a == (max + mid - min + 1) / 2

代码

class Solution {
public:
    int fillCups(vector<int>& amount) {
        int amax = amount[0], amin = amount[0];
        int asum = amount[0];
        for (int i = 1; i < amount.size(); i++) {
            amax = max(amax, amount[i]);
            amin = min(amin, amount[i]);
            asum += amount[i];
        }
        int amid = asum - amax - amin;
        if (amax >= amin + amid)
            return amax;
        return (asum + 1) / 2;
    }
};

标签:2335,max,冷水,装满,一杯,温水,amount,短时
From: https://www.cnblogs.com/zwyyy456/p/17479224.html

相关文章

  • 基于LSTM(长短时极记忆网络)与AR自回归模型的时间序列预测
    前一段时间股市有一些大的波动,其实很早就有人说过,股市有风险,投资需谨慎。不过如果能有一个比较适合的模型进行预测就好了。今天我介绍一下,时间序列预测分析。本人也是深度循环网络的小白,所以也算是与大家共勉了哈。有问题还希望大家多多指正。闲话少说,上代码首先先读入numpy中的......
  • 新打印的内容比\r删掉的上次的内容短时上次删除的内容残留咋回事?(已解决)
     原因:作者太菜,理解错了\r的作用,\r的功能不是删除而仅仅是将光标移到行首解决方法:将printf("\r");改为printf("\r     \r");......
  • Shortest time(最短时间)
    这题怎么这么难啊(恼 有若干个城市,它们之间有道路连通,可以互相到达,从一个城市到另一个城市时间为1。现在给出起点城市A,终点城市B,和N条道路。问从A到B最短时间。input第一行A,B,N(A,B,N<=30),B为最大城市标号接下来N行,每行两个数x,y,表示城市x和城市y有道路相连。out......
  • 最短时间——BFS
    最短时间有若干个城市,它们之间有道路连通,可以互相到达,从一个城市到另一个城市时间为1。现在给出起点城市A,终点城市B,和N条道路。问从A到B最短时间。输入第一行A,B,N(A,B,N<=30),B为最大城市标号接下来N行,每行两个数x,y,表示城市x和城市y有道路相连。输出输出最短时间。样例输入......
  • Google快速排名:揭秘独立站如何在短时间内提升搜索排名
    随着互联网的发展,许多站长都在关注Google快速排名的方法。作为一名拥有多年运营经验的站长,我将在本文中分享一些实用的技巧,帮助大家在短时间内提升Google搜索排名。1.网站内容质量为王高质量的原创内容是提升Google搜索排名的关键。站长们需要不断更新网站内容,确保文章具有独特性......
  • 基于短时幅度谱估计方法的数字语音信号增强matlab仿真
    1.算法仿真效果matlab2022a仿真结果如下:2.算法涉及理论知识概要语音处理过程中受到各种各样噪声的干扰,不但降低了语音质量,而且还将使整个系统无法正常工作。因此,为了消除噪声干扰,在现代语音处理技术中,工业上一般采用语音增强技术来改善语音质量从而提高系统性能。基于短时幅度......
  • 基于短时幅度谱估计方法的数字语音信号增强matlab仿真
    1.算法仿真效果matlab2022a仿真结果如下:    2.算法涉及理论知识概要        语音处理过程中受到各种各样噪声的干扰,不但降低了语音质量,而且还将使整个系统无法正常工作。因此,为了消除噪声干扰,在现代语音处理技术中,工业上一般采用语音增强技术来改善语音质量从......
  • 2335.装满杯子需要的最短总时长 (Easy)
    问题描述2335.装满杯子需要的最短总时长(Easy)现有一台饮水机,可以制备冷水、温水和热水。每秒钟,可以装满2杯不同类型的水或者1杯任意类型的水。给你一个下标从......
  • 11.6DMA可以实现短时间内传送大量数据
       在了解I/O输入输出及中断处理的同时,还希望大家记住另外一个机制,这就是DMA(DirectMemoryAccess)。DMA是指在不通过CPU的情况下,外围设备直接和主内存进行......
  • 11.6 DMA可以实现短时间内传送大量数据
    DMA机制是指在不通过CPU的情况下,外围设备直接和主内存进行数据传送。磁盘等都用到了这个DMA机制。通过利用DMA,大量数据就可以在短时间内转送到主内存。之所以这么快速,是因......