【每日一题Day361】LC2558从数量最多的堆取走礼物 | 大顶堆

简介: 【每日一题Day361】LC2558从数量最多的堆取走礼物 | 大顶堆

从数量最多的堆取走礼物【LC2558】

给你一个整数数组 gifts ,表示各堆礼物的数量。每一秒,你需要执行以下操作:

  • 选择礼物数量最多的那一堆。
  • 如果不止一堆都符合礼物数量最多,从中选择任一堆即可。
  • 选中的那一堆留下平方根数量的礼物(向下取整),取走其他的礼物。

返回在 k 秒后剩下的礼物数量*。*

  • 思路
    使用大顶堆存放所有礼物,每次将堆顶元素移出,并将其平方根放入堆中,最后求出堆中剩余礼物数目
  • 实现
class Solution {
    public long pickGifts(int[] gifts, int k) {
        long res = 0L;
        PriorityQueue<Integer> pq = new PriorityQueue<>((o1, o2) -> o2 - o1);
        for (int gift :gifts){
            pq.add(gift);
            res += gift;
        }
        while(k-- > 0){
            int poll = pq.poll(), left = (int)Math.sqrt(poll);
            res -= poll - left;
            pq.add(left);
        }
        return res;
    }
}

复杂度

时间复杂度:O ( n + k l o g n )

空间复杂度:O ( n )

目录
相关文章
|
程序员 数据安全/隐私保护 C++
【qt】动态属性
【qt】动态属性
185 1
|
6月前
|
弹性计算 资源调度 算法
阿里云 Elasticsearch Serverless 检索增强型8.17 版免费邀测!
阿里云Elasticsearch Serverless检索增强型8.17版现已开放邀测
371 59
|
5月前
|
机器学习/深度学习 人工智能 供应链
从概念到商业价值:AI、机器学习与深度学习全景指南
在这个科技飞速发展的时代🚀,人工智能正以惊人的速度渗透到我们的生活和工作中👀。但面对铺天盖地的AI术语和概念,很多人感到困惑不已😣。"AI"、"机器学习"、"深度学习"和"神经网络"到底有什么区别?它们如何相互关联?如何利用这些技术提升工作效率和创造价值?
|
JavaScript 前端开发 开发者
vue中使用axios请求post接口,请求会发送两次
vue中使用axios请求post接口,请求会发送两次
|
5月前
|
存储 人工智能 数据可视化
如何实现电竞比赛的实时直播?
电竞直播如何实现丝滑体验?揭秘其背后架构与技术!从选手操作数据捕获到观众多视角体验,超低延迟编码、智能OB系统、全球加速网络等五大关键技术支撑。面对海量数据与同步挑战,采用列式存储、时间戳同步和区块链防作弊。未来还将迎来云游戏式直播、AR可视化等创新,甚至全息投影与AI集锦生成,为观众带来沉浸式享受。
如何实现电竞比赛的实时直播?
|
10月前
|
数据采集 自然语言处理 NoSQL
Qwen for Tugraph:自然语言至图查询语言翻译大模型微调最佳实践
在图数据库的应用场景中,自然语言至图查询语言的高效转换一直是行业中的重要挑战。本次实践基于阿里云 Qwen 大模型,围绕 TuGraph 图数据库的需求,探索并验证了一套高效的大模型微调方案,显著提升了模型生成 Cypher 查询语句的能力。通过数据清洗、两阶段微调方法以及两模型推理框架等一系列创新策略,我们成功解决了图查询语言翻译任务中的核心问题。本文将从背景与目标、数据准备与清洗、微调框架设计、Prompt设计与优化、模型推理、最佳实践效果以及前景展望等六个部分出发,向读者逐步介绍我们的方案。
在Linux中,如何获取CPU的总核心数?
在Linux中,如何获取CPU的总核心数?
|
10月前
|
机器学习/深度学习 算法 安全
从方向导数到梯度:深度学习中的关键数学概念详解
方向导数衡量函数在特定方向上的变化率,其值可通过梯度与方向向量的点积或构造辅助函数求得。梯度则是由偏导数组成的向量,指向函数值增长最快的方向,其模长等于最速上升方向上的方向导数。这两者的关系在多维函数分析中至关重要,广泛应用于优化算法等领域。
704 36
从方向导数到梯度:深度学习中的关键数学概念详解
|
缓存 算法 Linux
Docker精华篇(二)-减少 Docker 镜像大小的策略
Docker精华篇(二)-减少 Docker 镜像大小的策略
Docker精华篇(二)-减少 Docker 镜像大小的策略
|
JavaScript
SpringBoot+Vue+ElementUI 实现视频播放 轮播图效果
这篇文章介绍了如何在SpringBoot+Vue+ElementUI项目中使用vue-awesome-swiper插件实现视频播放轮播图效果,包括安装插件、引入项目和使用案例的步骤。
SpringBoot+Vue+ElementUI 实现视频播放 轮播图效果