【LeetCode:2558. 从数量最多的堆取走礼物 | 大根堆】

news2024/9/24 3:28:32

在这里插入图片描述

🚀 算法题 🚀

🌲 算法刷题专栏 | 面试必备算法 | 面试高频算法 🍀
🌲 越难的东西,越要努力坚持,因为它具有很高的价值,算法就是这样✨
🌲 作者简介:硕风和炜,CSDN-Java领域新星创作者🏆,保研|国家奖学金|高中学习JAVA|大学完善JAVA开发技术栈|面试刷题|面经八股文|经验分享|好用的网站工具分享💎💎💎
🌲 恭喜你发现一枚宝藏博主,赶快收入囊中吧🌻
🌲 人生如棋,我愿为卒,行动虽慢,可谁曾见我后退一步?🎯🎯

🚀 算法题 🚀

在这里插入图片描述
在这里插入图片描述

🍔 目录

    • 🚩 题目链接
    • ⛲ 题目描述
    • 🌟 求解思路&实现代码&运行结果
      • ⚡ 大根堆
        • 🥦 求解思路
        • 🥦 实现代码
        • 🥦 运行结果
    • 💬 共勉

🚩 题目链接

  • 2558. 从数量最多的堆取走礼物

⛲ 题目描述

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

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

示例 1:

输入:gifts = [25,64,9,4,100], k = 4
输出:29
解释:
按下述方式取走礼物:

  • 在第一秒,选中最后一堆,剩下 10 个礼物。
  • 接着第二秒选中第二堆礼物,剩下 8 个礼物。
  • 然后选中第一堆礼物,剩下 5 个礼物。
  • 最后,再次选中最后一堆礼物,剩下 3 个礼物。
    最后剩下的礼物数量分别是 [5,8,9,4,3] ,所以,剩下礼物的总数量是 29 。
    示例 2:

输入:gifts = [1,1,1,1], k = 4
输出:4
解释:
在本例中,不管选中哪一堆礼物,都必须剩下 1 个礼物。
也就是说,你无法获取任一堆中的礼物。
所以,剩下礼物的总数量是 4 。

提示:

1 <= gifts.length <= 103
1 <= gifts[i] <= 109
1 <= k <= 103

🌟 求解思路&实现代码&运行结果


⚡ 大根堆

🥦 求解思路
  1. 遍历k次,通过维护一个大根堆,每次更新堆顶部的元素,循环结束,最后累加求和即可。
  2. 实现代码如下。
🥦 实现代码
class Solution {
    public long pickGifts(int[] gifts, int k) {
        PriorityQueue<Integer> queue=new PriorityQueue<>((a,b)->b-a);
        for(int i:gifts){
            queue.add(i);
        }
        long res=0;
        while(k-->0){
            queue.add((int)(Math.sqrt(queue.poll())));
        }
        while(!queue.isEmpty()){
            res+=queue.poll();
        }
        return res;
    }
}
🥦 运行结果

在这里插入图片描述


💬 共勉

最后,我想和大家分享一句一直激励我的座右铭,希望可以与大家共勉!

在这里插入图片描述

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1143554.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

面试算法43:在完全二叉树中添加节点

题目 在完全二叉树中&#xff0c;除最后一层之外其他层的节点都是满的&#xff08;第n层有2n-1个节点&#xff09;。最后一层的节点可能不满&#xff0c;该层所有的节点尽可能向左边靠拢。例如&#xff0c;图7.3中的4棵二叉树均为完全二叉树。实现数据结构CBTInserter有如下3种…

线程状态,BLOCKED和WAITING 有什么区别

BLOCKED 和 WAITING 都是属于线程的阻塞等待状态。 BLOCKED BLOCKED 状态是指线程在等待监视器锁的时候的阻塞状态。 也就是在多个线程去竞争 Synchronized 同步锁的时候&#xff0c;没有竞争到锁资源的 线程&#xff0c;会被阻塞等待&#xff0c;这个时候线程状态就是 BLOCK…

众和策略:数据要素市场腾飞在即 游戏市场持续高增长

昨日&#xff0c;两市股指早盘弱势下探&#xff0c;午后沪指在银行、电力等板块的带动下发力拉升&#xff0c;深成指、创业板指均走高。到收盘&#xff0c;沪指涨0.48%报2988.3点&#xff0c;深成指涨0.4%报9566.1点&#xff0c;创业板指涨0.65%报1875.86点&#xff1b;两市合计…

[javaweb]——spring框架之控制反转(IOC)与依赖注入(DI)

&#x1f308;键盘敲烂&#xff0c;年薪30万&#x1f308; 目录 一、概念介绍 二、示例演示 2.1 代码高内聚问题 2.2 三层架构 2.3 分层解耦 2.4 分层解耦的实现 &#x1f4d5;总结 一、概念介绍 控制反转&#xff1a;简称IOC&#xff0c;对象的创建控制权由程序自身转…

vulnhub_DeRPnStiNK靶机渗透测试

VulnHub2018_DeRPnStiNK靶机 https://www.vulnhub.com/entry/derpnstink-1,221/ flag1(52E37291AEDF6A46D7D0BB8A6312F4F9F1AA4975C248C3F0E008CBA09D6E9166) flag2(a7d355b26bda6bf1196ccffead0b2cf2b81f0a9de5b4876b44407f1dc07e51e6) flag4(49dca65f362fee401292ed7ada96f9…

人工智能基础_机器学习006_有监督机器学习_正规方程的公式推导_最小二乘法_凸函数的判定---人工智能工作笔记0046

我们来看一下公式的推导这部分比较难一些, 首先要记住公式,这个公式,不用自己理解,知道怎么用就行, 比如这个(mA)T 这个转置的关系要知道 然后我们看这个符号就是求X的导数,X导数的转置除以X的导数,就得到单位矩阵, 可以看到下面也是,各种X的导数,然后计算,得到对应的矩阵结…

ADI模数转换AD7091的SPI驱动接口verilog,代码/视频

名称&#xff1a;ADI模数转换AD7091的SPI驱动 软件&#xff1a;QuartusII 语言&#xff1a;Verilog 代码功能&#xff1a; 完成ADI单通道模数转换器AD7091R的逻辑接口设计。1 MSPS、超低功耗、12-Bit ADC &#xff08;1&#xff09;实现全部逻辑接口功能&#xff0c;完成对…

云端代码编辑器Atheos

什么是 Atheos &#xff1f; Atheos是一个基于 Web 的 IDE 框架&#xff0c;占用空间小且要求最低&#xff0c;构建于 Codiad 之上&#xff0c;不过 Atheos 已从原始 Codiad 项目完全重写&#xff0c;以利用更现代的工具、更简洁的代码和更广泛的功能。 注意事项 群晖内核版本太…

系列二十、循环依赖(二)

一、请解释下Spring的三级缓存 所谓Spring的三级缓存是Spring内部解决循环依赖的三个Map&#xff0c;即DefaultSingletonBeanRegistry中的三个Map。 二、A、B两对象在三级缓存中的迁移过程 第一步&#xff1a;A创建过程中需要B&#xff0c;于是A将自己放到三级缓存里面&#x…

ubuntu安装nps客户端

Ubuntu安装nps客户端 1.什么是nps内网穿透&#xff1f;2.设备情况3.下载客户端3.链接服务端3.1、无配置文件模式3.2、注册到系统服务(启动启动、监控进程) 1.什么是nps内网穿透&#xff1f; nps是一款轻量级、高性能、功能强大的内网穿透代理服务器。目前支持tcp、udp流量转发…

vue笔记(三)

15、过滤器 过滤器 用法&#xff1a;对要显示的数据进行特定格式化后再显示&#xff08;用于一个简单的逻辑处理&#xff09;语法 1、注册过滤器&#xff1a;Vue.fillter(name,callback) &#xff08;全局&#xff09;或 new Vue{filters&#xff1a;{}}&#xff08;局部&…

Ubuntu20运行SegNeXt代码提取道路水体(四)——成功解决训练与推理自己的数据集iou为0的问题!!

在我的这篇博文里Ubuntu20运行SegNeXt代码提取道路水体(三)——SegNeXt训练与推理自己的数据集 经过一系列配置后 iou算出来是0 经过多次尝试后 终于让我试出来了正确配置方法&#xff01; 具体的配置细节请查看这篇文章 1、在mmseg/datasets下面对数据集进行初始定义 我新建…

使用baostock获取上市公司情况

起因是有个不知道什么专业的同学问了我一题 cs: import baostock as bs import pandas as pd import datetime 日线指标参数包括&#xff1a;date,code,open,high,low,close,preclose,volume,amount,adjustflag,turn,tradestatus,pctChg,peTTM,pbMRQ,psTTM,pcfNcfTTM,isST 周…

CompletableFuture的理解

CompletableFuture 是 JDK1.8 里面引入的一个基于事件驱动的异步回调类。简单来说&#xff0c;就是当使用异步线程去执行一个任务的时候&#xff0c;我们希望在任务结束以后触发一个后续的动作。而 CompletableFuture 就可以实现这个功能。 业务问题 举个简单的例子&#xff0…

最长公共子序列(LCS)与最长上升子序列(LIS)问题的相互转换

在此只做直观理解&#xff0c;不做严格证明 参考&#xff1a;LCS 问题与 LIS 问题的相互关系&#xff0c;以及 LIS 问题的最优解证明 LCS转LIS LCS转LIS只能对特殊情况适用。即当LCS中两个数组有一个不存在重复元素的情况下才能进行转换。 我们以一个例子进行说明&#xff0c…

leetCode 76. 最小覆盖子串 + 滑动窗口 + 哈希Hash

我的往期文章&#xff1a;此题的其他解法&#xff0c;感兴趣的话可以移步看一下&#xff1a; leetCode 76. 最小覆盖子串 滑动窗口 图解&#xff08;详细&#xff09;-CSDN博客https://blog.csdn.net/weixin_41987016/article/details/134042115?spm1001.2014.3001.5501 力…

XJ+Nreal 高精度地图+Nreal眼镜SDK到发布APK至眼镜中

仅支持Anroid平台 Nreal套装自带的计算单元&#xff0c;其实也是⼀个没有显示器的Android设备 新建unity⼯程&#xff0c;将⼯程切换Android平台。 正在上传…重新上传取消正在上传…重新上传取消 Cloud XDK Unity User Manual for Nreal ARGlasses 该XDK是针对 NReal AR 眼镜…

mysql源码安装

Linux环境 1、mysql下载地址&#xff1a;https://dev.mysql.com/downloads/mysql/5.7.html#downloads 下载参考&#xff1a; 2、把下载的 MySQL 压缩包上传到 Linux 服务器 3、解压mysql-5.7.39-linux-glibc2.12-x86_64.tar.gz tar -zxvf mysql-5.7.39-linux-glibc2.12-x86…

【UE】Rider编辑器错误 .NET SDK 的版本 6.0300 至少需要 MBuild 的 17.00 版本,当前可用的 MSuld 版本

异常&#xff1a;.NET SDK 的版本 6.0300 至少需要 MBuild 的 17.00 版本&#xff0c;当前可用的 MSuld 版本为 16.1.2.50704请在 global.json 中指定的 .NET SDK 更为需要当前可用的 MSBuld 版本的版本 解决 切换当前使用的MBuild版本 File->Settings…打开设置窗口 找到…

基于web和mysql的图书管理系统

系统分为用户端和管理员端 用户端功能如下 登陆注册数据一栏个人信息修改个人信息修改密码图书查询借阅信息借阅状态安全退出 管理员端功能如下 登录个人信息修改个人信息修改密码读者管理书籍管理借阅管理借阅状态安全退出 用户 管理员 源码下载地址 支持&#xff1a;远程…