当前位置: 首页 > article >正文

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

 现有一台饮水机,可以制备冷水、温水和热水。每秒钟,可以装满 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

 肯定一次充2是更优的,我们尽可能多的充2,这样只需要总和一半的次数就能完成。

假设不同类型杯子的数量分别为 x, y 和 z,其中 x≤y≤z。

  • 如果 x+y≤z,那么每次装满 z 的时候,可以同时装满 x 或 y,因此总时长为 z。
  • 如果x+y>z,令 t=x+y−z,因为 y−z≤0,所以 t=x+y−z≤x≤y
    • 如果t是偶数,x+y+z 也为偶数,x,y同时装满t/2杯,x+y一共剩x+y-t=z杯,x和y分别和z同时装满,次数为(x+y-z)/2 + z = (x+y+z)/ 2
    • 如果t是奇数,x+y+z 也为奇数,x,y同时装满(t-1)/ 2,(因为t是奇数,所以不能装满t/2,而如果等于t,则会增多z的单独装满次数),x+y一共剩x+y-t+1=z+1 > z,x,y分别和z装满,剩一杯x或y,次数为(x+y-z -1)/2 + z + 1 = (x+y+z + 1)/ 2。((x+y+z)/ 2向上取整)
  • 因此无论 ttt 为奇数还是偶数,总时长都为 ⌈x+y+z⌉/2

coding

public int fillCups(int[] amount) {
        Arrays.sort(amount);
        if (amount[2] > amount[1] + amount[0]) {
            return amount[2];
        }
        //向上取整
        return (amount[0] + amount[1] + amount[2] + 1) / 2;
 }

向上取整的三种方法

Java两整数相除向上取整_明月几时有666的博客-CSDN博客_java向上取整


http://www.kler.cn/a/16476.html

相关文章:

  • HBase 安装与基本操作指南
  • Llama微调测试记录
  • HP G10服务器ESXI6.7告警提示ramdisk tmp已满
  • docker配置代理解决不能拉镜像问题
  • WordPress HTTPS 配置问题解决方案
  • kafka面试题解答(四)
  • 83. map函数()-通过函数实现对可迭代对象的操作(适合零基础)
  • 「SQL面试题库」 No_55 销售分析 I
  • ramfs, rootfsinitramfs
  • HTML(四) -- 多媒体设计
  • CCD视觉检测设备如何选择光源
  • 【面试长文】HashMap的数据结构和底层原理以及在JDK1.6、1.7和JDK8中的演变差异
  • Blender启动场景的修改
  • 资讯汇总230503
  • 哈希表企业应用-DNA的字符串检测
  • CKA/CKS/CKAD认证考试攻略
  • 【五一创作】( 字符串) 409. 最长回文串 ——【Leetcode每日一题】
  • 【LeetCood206】反转链表
  • Python小姿势 - Python学习笔记——类与对象
  • ZooKeeper安装与配置集群
  • NECCS|全国大学生英语竞赛C类|词汇和语法|词汇题|21:03~21:53
  • 可视化绘图技巧100篇高级篇(一)-环状条形图(radial bar chart)
  • android基础知识
  • Redis高频面试题,使用场景
  • TiDB实战篇-操作系统参数TiDB Server
  • HDU5909 Tree Cutting(FWT)