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

【每日一题Day115】LC2335装满杯子需要的最短总时长 | 贪心

装满杯子需要的最短总时长【LC2335】

You have a water dispenser that can dispense cold, warm, and hot water. Every second, you can either fill up 2 cups with different types of water, or 1 cup of any type of water.

You are given a 0-indexed integer array amount of length 3 where amount[0], amount[1], and amount[2] denote the number of cold, warm, and hot water cups you need to fill respectively. Return the minimum number of seconds needed to fill up all the cups.

什么时候天晴呀(又在草稿里没发出来)

  • 思路:如果存在两个杯子,那么每次装两杯;如果只存在一个杯子,那么每次装一杯。因此每次选择最大值和次大值进行装杯,尽可能每次装满两个杯子,减小最短时长。那么总时长取决于杯子的最大值maxmaxmax与剩下两个值的和sum−maxsum-maxsummax的大小关系:

    • 杯子的最大值大于剩下两个值的和,在装该类水杯时,可以顺便把另外两个装满,那么总时长即为杯子的最大值个数。
    • 杯子的最大值小于等于剩下两个值的和,那么每次选择最大值和次大值进行装杯,那么总时长即为⌈sum/2⌉\lceil sum/2 \rceilsum/2
      • 局部最优:三种杯子的数量均匀减小,每次尽可能装满两个杯子
      • 全局最优:装满杯子的总时长最短
  • 实现

    class Solution {public int fillCups(int[] amount) {int max = 0;int sum = 0;for (int num : amount){sum += num;max = Math.max(num, max);}if (max > sum - max) {return max;}else{return sum / 2 + sum % 2;}}
    }
    
    • 复杂度
      • 时间复杂度:O(1)O(1)O(1)
      • 空间复杂度:O(1)O(1)O(1)

相关文章:

【每日一题Day115】LC2335装满杯子需要的最短总时长 | 贪心

装满杯子需要的最短总时长【LC2335】 You have a water dispenser that can dispense cold, warm, and hot water. Every second, you can either fill up 2 cups with different types of water, or 1 cup of any type of water. You are given a 0-indexed integer array amo…...

Flink流计算处理-旁路输出

使用Flink做流数据处理时,除了主流数据输出,还自定义侧流输出即旁路输出,以实现灵活的数据拆分。 定义旁路输出标签 首先需要定义一个OutputTag,代码如下: // 这需要是一个匿名的内部类,以便我们分析类型…...

nginx正向代理的配置和使用

nginx正向代理的配置和使用 nginx正向代理的配置和使用nginx正向代理的配置和使用安装包准备下载nginx安装包下载正向代理模块的包版本与模块对照表部署nginx服务上传nginx包和正向模块包解压,改名安装nginx配置正向代理创建nginx用户检查nginx配置并启动nginx服务所在服务器验…...

Oracle Trace File Analyzer 介绍及简单使用

一、什么是Oracle Trace File Analyzer Oracle Autonomous Health Framework(AHF) 包含 Oracle ORAchk, Oracle EXAchk, and Oracle Trace File Analyzer(TFA). AHF工具包包含了Oracle常用的多种诊断工具,如 ORAchk, Oracle EXAchk, and Oracle Trace File Analyzer…...

面试实战篇 | 快手本地生活,结合项目谈Redis实战项目场景?MySQL InnoDB存储引擎如何工作的?策略模式?

本期是【你好,面试官】系列文章的第21期,持续更新中…。 《你好,面试官》系列目前已经连载20篇了,据说看了这个系列的朋友都拿到了大厂offer~ 你好,面试官 | 你真的理解面向 “对象”?你好,面…...

Hadoop之——WordCount案例与执行本地jar包

目录 一、WordCount代码 (一)WordCount简介 1.wordcount.txt (二)WordCount的java代码 1.WordCountMapper 2.WordCountReduce 3.WordCountDriver (三)IDEA运行结果 (四)Hadoop运行wordcount 1.在HDFS上新建一个文件目录 2.新建一个文件,并上传至该目录下…...

利用git reflog 命令来查看历史提交记录,并使用提交记录恢复已经被删除掉的分支

一.问题描述 当我们在操作中手误删除了某个分支,那该分支中提交的内容也没有了,我们可以利用git reflog这个命令来查看历史提交的记录从而恢复被删除的分支和提交的内容 二.模拟问题 1.创建git仓库,并提交一个文件 [rootcentos7-temp /da…...

【软件测试】大厂测试开发你真的了解吗?测试开发养成记......

目录:导读前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结(尾部小惊喜)前言 在一些大公司里&…...

Redis中的hash结构和扩容机制

1.rehash原理 hash包含两个数据结构为字典数组ht[0]和ht[1]。其中ht[0]用来存放数据,ht[1]在rehash时使用。 扩容时,ht[1]的大小为第一个大于等于ht[0].used*2的2的幂次方的数; 收缩时,ht[1]的大小为第一个大于等于ht[0].used的…...

【C++奇技淫巧】前置自增与后置自增的区别(++i,i++)【2023.02.08】

简介 先说i和i的区别&#xff0c;判断语句中if(i)是拿i的值先判断&#xff0c;而后自增&#xff1b;if(i)是先自增i再进行判断。涉及到左值与右值也有点区别&#xff0c;i返回的是右值&#xff0c;i返回的是左值。也就是下面的代码要解释的东西。 #include <iostream>i…...

实战打靶集锦-005-HL

**写在前面&#xff1a;**记录一次曲折的打靶经历。 目录1. 主机发现2. 端口扫描3. 服务枚举4. 服务探查4.1 浏览器访问4.2 目录枚举4.3 探查admin4.4 探查index4.5 探查login5 公共EXP搜索6. 再次目录枚举6.1 探查superadmin.php6.2 查看页面源代码6.3 base64绕过6.4 构建反弹…...

铁路系统各专业介绍(车机工电辆)

目录 1 车务段 1.1 职能简介 1.2 路段名单 1.3 岗位级别 2 机务段 2.1 职能简介 2.2 路段名单 2.3 岗位级别 3 工务段 3.1 职能简介 3.2 路段名单 3.3 岗位级别 4 电务段 4.1 职能简介 4.2 路段名单 4.3 岗位级别 5 车辆段 5.1 职能简介 5.2 路段名单 5.3 …...

2/11考试总结

时间安排 7:30–7:50 读题&#xff0c;T1貌似是个 dp &#xff0c;T2 数据结构&#xff0c;T3 可能是数据结构。 7:50–9:45 T1&#xff0c;点规模非常大&#xff0c;可以达到 1e18 级别&#xff0c;感觉应该没法直接做&#xff0c;考虑每条新增的边的贡献&#xff0c;想到用 …...

Java Set集合

7 Set集合 7.1 Set集合的概述和特点 Set集合的特点 不包含重复元素的集合没有带索引的方法&#xff0c;所以不能使用普通for循环 Set集合是接口通过实现类实例化&#xff08;多态的形式&#xff09; HashSet&#xff1a;添加的元素是无序&#xff0c;不重复&#xff0c;无索引…...

【手写 Vuex 源码】第七篇 - Vuex 的模块安装

一&#xff0c;前言 上一篇&#xff0c;主要介绍了 Vuex 模块收集的实现&#xff0c;主要涉及以下几个点&#xff1a; Vuex 模块的概念&#xff1b;Vuex 模块和命名空间的使用&#xff1b;Vuex 模块收集的实现-构建“模块树”&#xff1b; 本篇&#xff0c;继续介绍 Vuex 模…...

EOC第六章《块与中枢派发》

文章目录第37条&#xff1a;理解block这一概念第38条&#xff1a;为常用的块类型创建typedef第39条&#xff1a;用handler块降低代码分散程度第41条&#xff1a;多用派发队列&#xff0c;少用同步锁方案一&#xff1a;使用串行同步队列来将读写操作都安排到同一个队列里&#x…...

八、Git远程仓库操作——跨团队成员的协作

前言 前面一篇博文介绍了git团队成员之间的协作&#xff0c;现在在介绍下如果是跨团队成员的话&#xff0c;如何协作&#xff1f; 跨团队成员协作&#xff0c;其实就是你不属于那个项目的成员&#xff0c;你没有权限向那个仓库提交代码。但是github还有另一种 pull request&a…...

算法刷题打卡第88天:字母板上的路径

字母板上的路径 难度&#xff1a;中等 我们从一块字母板上的位置 (0, 0) 出发&#xff0c;该坐标对应的字符为 board[0][0]。 在本题里&#xff0c;字母板为board ["abcde", "fghij", "klmno", "pqrst", "uvwxy", "…...

UVa The Morning after Halloween 万圣节后的早晨 双向BFS

题目链接&#xff1a;The Morning after Halloween 题目描述&#xff1a; 给定一个二维矩阵&#xff0c;图中有障碍物和字母&#xff0c;你需要把小写字母移动到对应的大写字母位置&#xff0c;不同的小写字母可以同时移动&#xff08;上下左右四个方向或者保持不动 &#xff0…...

Connext DDS属性配置参考大全(3)

Transport传输dds.participant.logging.time_based_logging.process_received_messagedds.participant.logging.time_based_logging.process_received_message.timeout...

如何扩展 mongo-express:自定义功能开发终极指南 [特殊字符]

如何扩展 mongo-express&#xff1a;自定义功能开发终极指南 &#x1f680; 【免费下载链接】mongo-express 项目地址: https://gitcode.com/gh_mirrors/mon/mongo-express mongo-express 是一个强大的基于 Web 的 MongoDB 管理界面&#xff0c;为开发者和数据库管理员…...

10分钟精通语音识别:FunASR热词定制实战指南

10分钟精通语音识别&#xff1a;FunASR热词定制实战指南 FunASR作为端到端语音识别工具包&#xff0c;其热词定制功能能够显著提升专业术语的识别准确率。在医疗、金融、科技等专业领域&#xff0c;通过简单的配置文件即可实现98%以上的专业词汇识别精度。本文将从零开始&…...

【2026年阿里巴巴春招- 3月25日-算法岗-第一题- 三星数字】(题目+思路+JavaC++Python解析+在线测试)

题目内容 给定一个整数 n n n ,请你找到两个不同的正整数 x , y x,y x,y,满足...

RAPIDMP3嵌入式音频模块:UART控制的高保真MP3/WAV协处理器

1. RAPIDMP3 模块深度技术解析&#xff1a;面向嵌入式系统的高保真音频处理方案1.1 模块定位与工程价值RAPIDMP3&#xff08;即 RAPID_MP3_V1&#xff09;并非通用音频解码库&#xff0c;而是一款硬件级立体声 MP3 播放与 WAV 录音模块&#xff0c;其核心价值在于将复杂的音频编…...

AI智能文档扫描仪轻量级优势:适用于边缘设备的部署实践

AI智能文档扫描仪轻量级优势&#xff1a;适用于边缘设备的部署实践 1. 为什么轻量级文档扫描在边缘场景中不可替代 你有没有遇到过这样的情况&#xff1a;在客户现场调试工业设备时&#xff0c;需要快速扫描一份维修手册&#xff1b;在仓库盘点时&#xff0c;要即时拍下纸质入…...

AI不再是聊天机器人!从《Agentic Design Patterns》汲取的5大核心启示,彻底重塑你的架构思维

大多数开发者还以为&#xff0c;生成式AI的终极答案就是把大模型参数堆得更大、提示词写得更聪明&#xff0c;就能解决一切生产力难题。但最近读完Antonio Gulli的《Agentic Design Patterns》&#xff0c;我突然意识到&#xff1a;我们过去两年其实只造出了“引擎”&#xff0…...

解决MathType在Word中加载失败的终极指南:从运行时错误53到MathPage.WLL缺失

1. 遇到MathType加载失败时先别慌 最近有不少朋友在系统升级后遇到了MathType无法正常加载的问题。作为一个经常和公式打交道的科研狗&#xff0c;我完全理解这种崩溃感——论文deadline近在眼前&#xff0c;公式编辑器却罢工了。最常见的两种报错是&#xff1a;"Please r…...

Vivado GUI隐藏技巧:如何手动修改OOC模式IP的时钟频率(附200MHz实战案例)

Vivado GUI隐藏技巧&#xff1a;如何手动修改OOC模式IP的时钟频率&#xff08;附200MHz实战案例&#xff09; 在FPGA开发中&#xff0c;Vivado的IP核(IP Catalog)功能极大提升了设计效率&#xff0c;但OOC(Out-of-Context)模式下IP核的时钟频率设置却常常让初学者困惑。当你在G…...

Buck变换器的闭环控制在恒功率负载场景下是个挺有意思的挑战。最近用Simulink搭了个完整的仿真平台,这里把建模过程和控制策略掰开揉碎了聊聊

恒功率负载下Buck变换器的建模与控制simulink仿真文 件 亲手搭建 现代控制理论 附赠参考文献 另有一份word或PDF报告可加价先看电路拓扑结构&#xff0c;典型的Buck电路由开关管、续流二极管、LC滤波电路组成。在恒功率负载条件下&#xff0c;负阻抗特性会导致系统稳定性问题—…...

PPPOSClient:ESP32上轻量级GSM PPP over Serial客户端实现

1. PPPOSClient 库深度解析&#xff1a;面向 ESP32 的 GSM PPPoS 协议客户端实现1.1 库定位与工程价值PPPOSClient 是一个专为嵌入式物联网终端设计的轻量级 GSM 网络接入中间件&#xff0c;其核心价值在于将底层 PPP over Serial&#xff08;PPPoS&#xff09;协议栈与上层应用…...