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

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

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

算法一:贪心 + 数学思想

思路

  • 将饮料按数量从大到小排序, 设数量为 a, b, c 。
  • 如果 a >= b + c ,每次可以用一个 a 和 b / c 匹配 ,因此答案就是 a;
  • 如果 a < b + c,我们考虑超出的部分,记为 dis = (b + c - a)。
    • 如果 dis 是偶数,那么我们可以先让 b 和 c 匹配 dis / 2 次 ,操作过后有 b + c = a, 此时每次可以用一个 a 依次和 b / c 匹配, 所以答案为 dis/2 + a;
    • 如果 dis 是奇数,那么我们可以先让 b 和 c 匹配 dis-1 / 2 次 ,操作过后有 b + c - 1 = a, 此时每次可以用一个 a 依次和 b / c 匹配, 所以答案为 (dis-1)/ 2 + a;
      上述两种情况可以合并为:(dis+1) / 2 + a 。

收获

  • 这一题之前做过类似的,1753. 移除石子的最大得分 。 因此做这道题的时候一直在回想之前是怎么完成的, 但是一直没想出来,最后想到了要分 a >= b+c 和 a < b+c 两种情况,但是第二种情况没有正确写出来。

    查看了 1753 这道题后发现,二者有些不同,本题需要使数组中每个元素都为 0 ,而之前那道题只需要有 2 个元素为 0 。

算法情况

  • 时间复杂度:O(1)
  • 空间复杂度:O(1)

代码

class Solution {
public:int fillCups(vector<int>& amount) {// 从大到小排序sort(amount.begin(), amount.end(), greater());int a = amount[0], b = amount[1], c = amount[2];if(a >= b + c)  return a;else{int dis = b + c - a;return (dis + 1) / 2 + a;}}
};

相关文章:

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

2335. 装满杯子需要的最短总时长 题目描述 现有一台饮水机&#xff0c;可以制备冷水、温水和热水。每秒钟&#xff0c;可以装满 2 杯 不同 类型的水或者 1 杯任意类型的水。 给你一个下标从 0 开始、长度为 3 的整数数组 amount &#xff0c;其中 amount[0]、amount[1] 和 a…...

Android 12.0 通过驱动实现禁用usb鼠标和usb键盘功能

1.1概述 在12.0的系统产品定制化开发中,在进行定制中有关于usb键盘和usb鼠标的需求中,产品要求禁止usb口挂载usb鼠标和usb键盘,所以需要要求在usb挂载类型的时候 判断如果是usb鼠标和usb键盘就不让挂载,这就需要从驱动方面入手来解决这个问题,接下来看下驱动的某些挂载usb…...

C++入门——内存管理

C入门——内存管理 C/C内存分布 分类是为了更好的管理 int globalVar 1; static int staticGlobalVar 1; void Test() {static int staticVar 1;int localVar 1;int num1[10] {1, 2, 3, 4};char char2[] "abcd";char* pChar3 "abcd";int* ptr1 (…...

MySQL-InnoDB行格式浅析

简介 我们知道读写磁盘的速度非常慢&#xff0c;和内存读写差了几个数量级&#xff0c;所以当我们想从表中获取某些记录时&#xff0c; InnoDB 存储引擎需要一条一条的把记录从磁盘上读出来么&#xff1f; 不&#xff0c;那样会慢死&#xff0c;InnoDB 采取的方式是&#xff1a…...

AXI 总线协议学习笔记(4)

引言 前面两篇博文从简单介绍的角度说明了 AXI协议规范。 AXI 总线协议学习笔记&#xff08;2&#xff09; AXI 总线协议学习笔记&#xff08;3&#xff09; 从本篇开始&#xff0c;详细翻译并学习AXI协议的官方发布规范。 文档中的时序图说明&#xff1a; AXI指&#xff1…...

C++复习笔记6

1.String类的实现 注意深浅拷贝&#xff0c; C语言字符串拼接函数strcat() #define _CRT_SECURE_NO_WARNINGS #include<iostream> #include<vld.h> #include<assert.h> using namespace std;class String {friend ostream& operator<<(ostream &am…...

指针的步长及意义(C语言基础)

指针的步长及意义 文章目录指针的步长及意义指针变量1后偏移的字节数不同指针解引用时取出的字节数不同其他例子不同类型的指针有何不同的意义指针变量1后跳跃字节数量不同解引用的时候&#xff0c;取出字节数量不同 指针变量1后偏移的字节数不同 代码演示&#xff1a;&#…...

SpringMVC:统一异常处理(11)

统一异常处理1. 说明2. 问题描述3. 异常处理器使用3.1 创建异常处理器类3.2 让程序抛出异常3.3 测试4. 项目异常处理方案4.1 异常分类4.2 异常解决方案4.3 异常解决方案的具体实现4.4 测试5. 总结1. 说明 \quad本篇文章是在文章SpringMVC&#xff1a;SSM整合&#xff08;Spring…...

SpringBoot的配置与使用

SpringBoot简介 我们的Spring是包含了众多工具的IoC容器&#xff0c;而SpringBoot则是Spring的加强版&#xff0c;可以更加方便快捷的使用 如果Spring是手动挡的车&#xff0c;那么SpringBoot就是自动挡的车&#xff0c;让我们的驾驶体验变得更好 SpringBoot具有一下几种特征…...

【Python】tkinter messagebox练习笔记

我一好友在朋友圈看到人家用代码花式秀恩爱&#xff0c;让我也做一个&#xff0c;我就用我学习半年python的功力&#xff0c;做了这一个东西。&#x1f64f;窗口主页面&#xff08;图一&#xff09;为了让我这个盆友有颜面&#xff0c;特意做了一个问答问他帅不帅&#xff0c;以…...

2022年12月电子学会Python等级考试试卷(五级)答案解析

青少年软件编程&#xff08;Python&#xff09;等级考试试卷&#xff08;五级&#xff09; 分数&#xff1a;100 题数&#xff1a;38 一、单选题(共25题&#xff0c;共50分) 1. 下面哪个语句正确定义了元组类型数据tuple1&#xff1f;&#xff08; &#xff09; A. t…...

计算机网络自定向下 -- 浅谈可靠性之rdt协议

可靠性数据传输原理 可靠指数据在传输过程中不错&#xff0c;不丢&#xff0c;不乱 运输层要为应用层提供一种服务&#xff1a;数据可以通过一条可靠的信道进行传输&#xff0c;在该信道中传输的数据不会受到损坏或者丢失, 实现这种服务的是可靠数据传输协议。 要实现这种服…...

制造业升级转型:制造业上市公司-智能制造词频统计数据集

发展智能制造&#xff0c;关乎中国制造业转型升级的成效。基于中国制造业上市公司年报&#xff0c;通过文本数据挖掘&#xff0c;提取关键词反映企业对智能制造的关切焦点&#xff0c;进而运用词频及共词网络分析&#xff0c;洞察中国智能制造的发展态势。 研究发现&#xff0…...

HTML 开发工具整理

一、千乐微云团队推荐的HTML开发工具Visual Studio Code 简称VS Code &#xff08;第一推荐&#xff09;Visual Studio Code (简称 VS Code / VSC) 是一款免费开源的现代化轻量级代码编辑器&#xff0c;支持几乎所有主流的开发语言的语法高亮、智能代码补全、自定义快捷键、括号…...

介绍ACE C++网络通信框架

​ 很久以前笔者也不太熟悉ACE C网络通信框架&#xff0c;偶然的机会逐渐接触后&#xff0c;发现它的优良&#xff01; 总结来看它的有点如下 非常适合后台无界面网络通信的系统编程 适合小型化核心网使用&#xff1b;但值得注意&#xff0c;如果您需要的是web领域技术栈&…...

【Mac OS】JDK 多版本切换配置

前言 由于不同的项目可能需要使用的 JDK 版本不一样&#xff0c;所以在系统中配置多个 JDK 版本&#xff0c;并且能随时切换&#xff0c;是一个必要的配置。 查看已安装的 JDK 版本 /usr/libexec/java_home -V框框1是执行的命令 框框2是当前系统下所有的 JDK 版本 框框3是当…...

RabbitMQ-Exchanges交换机

一、介绍 RabbitMQ消息传递模型的核心思想是&#xff1a;生产者生产的消息从不会直接发送到队列。实际上&#xff0c;通常生产者甚至不知道这些消息传递到了哪些队列中。相反&#xff0c;生产者只能将消息发送到交换机&#xff0c;交换机工作的内容非常简单&#xff0c;一方…...

离散数学 课时二 命题逻辑等值演算

等值式(等值联结词) 1、设A、B是两个命题公式,若A、B构成的等价式 A等价于B 为重言式,那么称A与B是等值的 2、常用等值式&#xff1a; 注意&#xff1a; 1 双否定律 2 幂等律 3 交换律 4 结合律 5 吸收律 6 德摩根律 7 同一律 8 零律 9 矛盾律 10 排中律 11 蕴含表达式 12 …...

Debezium系列之:事件扁平化转换SMT,简化debezium数据格式,为数据添加head,为值添加键值对

Debezium系列之:事件扁平化转换SMT,简化debezium数据格式,为数据添加head,为值添加键值对 一、需求背景二、Debezium数据格式和扁平化数据格式对比三、事件扁平化SMT作用四、事件扁平化转换SMT设置五、事件扁平化参数详解六、完整SMT参数配置一、需求背景 Debezium 数据更改…...

内网渗透(十八)之Windows协议认证和密码抓取-本地认证(NTML哈希和LM哈希)

系列文章第一章节之基础知识篇 内网渗透(一)之基础知识-内网渗透介绍和概述 内网渗透(二)之基础知识-工作组介绍 内网渗透(三)之基础知识-域环境的介绍和优点 内网渗透(四)之基础知识-搭建域环境 内网渗透(五)之基础知识-Active Directory活动目录介绍和使用 内网渗透(六)之基…...

为个人开源项目寻找高性价比大模型API的选型与实践

&#x1f680; 告别海外账号与网络限制&#xff01;稳定直连全球优质大模型&#xff0c;限时半价接入中。 &#x1f449; 点击领取海量免费额度 为个人开源项目寻找高性价比大模型API的选型与实践 对于个人开发者或学生而言&#xff0c;运营一个GitHub开源项目常常需要在有限的…...

ECA:编辑器无关的AI编程伴侣,统一配置多模型与编辑器

1. 项目概述&#xff1a;一个编辑器无关的AI编程伴侣如果你和我一样&#xff0c;每天大部分时间都泡在编辑器里&#xff0c;那你肯定也经历过这种场景&#xff1a;面对一段复杂的业务逻辑&#xff0c;或者一个陌生的API&#xff0c;你希望有个“懂行”的伙伴能立刻给你解释、重…...

长期使用Taotoken的Token Plan套餐在项目开发成本控制上的实际感受

&#x1f680; 告别海外账号与网络限制&#xff01;稳定直连全球优质大模型&#xff0c;限时半价接入中。 &#x1f449; 点击领取海量免费额度 长期使用Taotoken的Token Plan套餐在项目开发成本控制上的实际感受 1. 从按需付费到计划用量的转变 在AI应用开发的早期阶段&…...

Cortex-R52内存管理与实时性优化技术解析

1. Cortex-R52内存管理架构解析Cortex-R52作为Armv8-R架构的旗舰级实时处理器&#xff0c;其内存管理系统针对高可靠性场景进行了深度优化。与传统MMU不同&#xff0c;R52采用了增强型MPU&#xff08;Memory Protection Unit&#xff09;设计&#xff0c;通过16-24个可编程保护…...

【CPO三维路径规划】豪猪算法CPO多无人机协同集群避障路径规划(目标函数:最低成本:路径、高度、威胁、转角)研究(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…...

为什么92%的DeepSeek私有化部署在K8s上遭遇OOMKilled?——GPU内存隔离、vLLM适配与cgroups v2调优三重解法

更多请点击&#xff1a; https://intelliparadigm.com 第一章&#xff1a;DeepSeek私有化部署的Kubernetes现状与OOMKilled困局 当前&#xff0c;DeepSeek系列大模型在企业私有化场景中广泛采用Kubernetes进行容器化编排部署。然而&#xff0c;实际落地过程中&#xff0c;内存…...

AI时代Clean Code新标准(DeepSeek R1实测验证版):92.7%可维护性提升背后的11个关键断点

更多请点击&#xff1a; https://intelliparadigm.com 第一章&#xff1a;AI时代Clean Code范式迁移的必然性 当大语言模型能自动生成函数、修复漏洞、甚至重构整包逻辑时&#xff0c;“可读性优先”的传统Clean Code原则正遭遇结构性挑战。人类开发者编写的代码不再唯一面向…...

WarcraftHelper魔兽争霸III优化工具:让你的经典游戏重获新生

WarcraftHelper魔兽争霸III优化工具&#xff1a;让你的经典游戏重获新生 【免费下载链接】WarcraftHelper Warcraft III Helper , support 1.20e, 1.24e, 1.26a, 1.27a, 1.27b 项目地址: https://gitcode.com/gh_mirrors/wa/WarcraftHelper 你是否还在为《魔兽争霸III》…...

Dell G15终极散热管理:开源热控中心完全指南 [特殊字符]

Dell G15终极散热管理&#xff1a;开源热控中心完全指南 &#x1f680; 【免费下载链接】tcc-g15 Thermal Control Center for Dell G15 - open source alternative to AWCC 项目地址: https://gitcode.com/gh_mirrors/tc/tcc-g15 还在为Dell G15游戏本的过热问题而烦恼…...

5分钟极速指南:免费将Word文档完美转换为LaTeX的终极工具docx2tex

5分钟极速指南&#xff1a;免费将Word文档完美转换为LaTeX的终极工具docx2tex 【免费下载链接】docx2tex Converts Microsoft Word docx to LaTeX 项目地址: https://gitcode.com/gh_mirrors/do/docx2tex 还在为Word文档转换LaTeX格式而烦恼吗&#xff1f;每次手动调整公…...