码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 【LeetCode:2558. 从数量最多的堆取走礼物 | 大根堆】


    在这里插入图片描述

    🚀 算法题 🚀

    🌲 算法刷题专栏 | 面试必备算法 | 面试高频算法 🍀
    🌲 越难的东西,越要努力坚持,因为它具有很高的价值,算法就是这样✨
    🌲 作者简介:硕风和炜,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;
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    🥦 运行结果

    在这里插入图片描述


    💬 共勉

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

    在这里插入图片描述

    在这里插入图片描述

  • 相关阅读:
    视频汇聚/视频云存储/视频监控管理平台EasyCVR部署后无法正常启用是什么问题?该如何解决?
    『虫无涯→_→读书推荐02期』|全面系统的〖Effective软件测试〗带你完成所有不同类型的测试,GO
    ansible第一章
    Axure 9 实战案例,动态面板的应用 6,导航菜单栏的手风琴效果
    SSM学生惩奖系统的设计与实现毕业设计-附源码201520
    vscode插件推荐
    centos(7.9) minikube(v1.28.0) kaniko 构建镜像
    网络是如何进行通信
    什么是物联网?如何保护物联网iot安全性
    【计算机网络笔记】IPv6简介
  • 原文地址:https://blog.csdn.net/Coder_ljw/article/details/134088297
  • 最新文章
  • 沪漂五周年了:我越来越迷茫了
    Agentic Skill Routing 实战:别再把所有 Skill 塞进 AI Agent 上下文
    MySQL-Seconds_behind_master的精度误差
    [MAF预定义ChatClient中间件-03]CachingChatClient——利用缓存省钱省时间
    AI的至暗历史:从万众期待到被政府撤资,AI的两次死亡徘徊
    Agent OS :五种驯服不确定性的范式
    PortSwigger SQL注入LAB11
    数据库即时编译JIT
    [Begin]AI Learn Data Day 0
    深度学习进阶(二十七)现代 LLM 的核心架构设计其二:SwiGLU
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
小工具 小游戏
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1

京公网安备 11010502049817号