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

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

在这里插入图片描述

1、堆

我们可以维护一个堆,首先我们将数组中不为0的数全部加入堆中,而后进行循环。当堆不为空时,我们将堆顶元素出堆并减一,而后观察是否还能继续出堆,若能则出堆,否则跳过,最后我们将处理后的新元素入堆,如此循环直至堆为空。

class Solution {
public:int fillCups(vector<int> &amount) {priority_queue<int, vector<int>> maxHeap;int res = 0;for (int i: amount) {if (i == 0) {continue;}maxHeap.push(i);}while (!maxHeap.empty()) {int top1, top2;top1 = maxHeap.top();maxHeap.pop();--top1;if (!maxHeap.empty()) {top2 = maxHeap.top();maxHeap.pop();--top2;if (top2 != 0) {maxHeap.push(top2);}}if (top1 != 0) {maxHeap.push(top1);}++res;}return res;}
};

2、数学

我们可以直接使用数学方法解决问题。我们首先对元素进行排序:1、若最大元素大于等于两外两个元素之和,则说明我们最少也要花费最大元素秒;2、若最大元素小于两外两个元素之和,则说明我们可以通过组合实现接满水,因此花费的时间为元素之和除二向上取整。

int fillCups(vector<int> &amount) {sort(amount.begin(), amount.end());if (amount[2] >= amount[0] + amount[1]) {return amount[2];} else {int sum = 0;for (int i: amount) {sum += i;}return (sum + 1) / 2;}
}
http://www.lryc.cn/news/2536.html

相关文章:

  • npm ERR! code ELIFECYCLE解决方案,npm犯错!myweb@1.0.0构建脚本失败。
  • 最小二乘支持向量机”在学习偏微分方程 (PDE) 解方面的应用(Matlab代码实现)
  • ISYSTEM调试实践8-winIDEA Analyzer功能1
  • 每日学术速递2.11
  • 宝塔搭建实战php开源likeadmin通用管理admin端vue3源码(二)
  • 网络基础-虚拟化工具-网桥
  • 剑指 Offer 14- II. 剪绳子 II
  • English Learning - Day55 作业打卡 2023.2.9 周四
  • pixhawk2.4.8-地面站配置-APM固件
  • golang 通道类型
  • 并发、并行、吞吐量、延迟、响应时间 含义理解
  • HTTP 和 HTTPS 的区别
  • 微搭低代码从入门到精通07-基础布局组件
  • Docker镜像的创建
  • 电子技术——MOS差分输入对
  • 树莓派 - 小记
  • 【论文解读|KDD2020】AKT. Context-Aware Attentive Knowledge Tracing
  • Geek Uninstaller:向流氓软件火力全开,超良心的软件彻底卸载工具
  • Java线程池
  • 2023-02-10 - 5 文本搜索
  • 华为OD机试 - 最近的医院(Python),简单直白
  • Leetcode.1223 掷骰子模拟
  • 数据分析到底该怎么学呢?讲真,真不难!
  • 活动星投票紫砂新青年制作一个投票活动
  • Git | 在IDEA中使用Git
  • < Linux >:Linux 进程概念 (4)
  • 七、Java框架之MyBatisPlus
  • C语言柔性数组
  • 支付功能测试用例
  • 牛客网Python篇数据分析习题(一)