leetcode_2558 从数量最多的堆取走礼物

这篇具有很好参考价值的文章主要介绍了leetcode_2558 从数量最多的堆取走礼物。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1. 题意

给定一个数组,每次从中取走最大的数,返回开根号向下取整送入堆中,最后计算总和。

从数量最多的堆取走礼物

2. 题解

直接用堆模拟即可

2.1 我的代码

用了额外的空间O( n )
priority_queue会自动调用make_heap()pop_heap()

class Solution {
public:
    long long pickGifts(vector<int>& gifts, int k) {
        priority_queue<int, vector<int>, less<> > maxHeap(gifts.begin(), gifts.end());

        long long ans = 0;
        for ( int i = 0; i < k; ++i) {
            int p = maxHeap.top();
            if (p == 1) break;
            maxHeap.pop();
            maxHeap.push( (int) sqrt(p));
        }


        while (!maxHeap.empty()) {
            ans += maxHeap.top();
            maxHeap.pop();
        }

        return ans;
    }
};
2.2 更简的代码

直接在原数组上建堆就可以了文章来源地址https://www.toymoban.com/news/detail-737785.html

class Solution {
public:
    long long pickGifts(vector<int>& gifts, int k) {
        
        make_heap(gifts.begin(), gifts.end(), less<int>());

        for ( int i = 0; i < k; ++i) {
            pop_heap(gifts.begin(), gifts.end() );
            gifts.back() = sqrt(gifts.back());
            push_heap(gifts.begin(), gifts.end());
        }


        return accumulate(gifts.begin(), gifts.end(), 0ll );
    }
};

到了这里,关于leetcode_2558 从数量最多的堆取走礼物的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 「SQL面试题库」 No_28 订单最多的客户

    「SQL面试题库」是由 不是西红柿 发起,全员免费参与的SQL学习活动。我每天发布1道SQL面试真题,从简单到困难,涵盖所有SQL知识点,我敢保证只要做完这100道题,不仅能轻松搞定面试,代码能力和工作效率也会有明显提升。 1.1 活动流程 整理题目 :西红柿每天无论刮风下雨

    2023年04月10日
    浏览(62)
  • Linux查询内存或CPU占用最多的几个进程

    一、可以使用以下命令查使用内存最多的10个进程 方法1: ps -aux | sort -k4nr | head -10 如果是最高的三个,10改为3即可 命令解释:  1. ps:参数a指代all——所有的进程,u指代userid——执行该进程的用户id,x指代显示所有程序,不以终端机来区分。ps -aux的输出格式如下: USER  

    2024年04月17日
    浏览(41)
  • Linux如何查看当前占用CPU和内存最多的进程

    查看占用 CPU 最高的前10个进程 查看占用内存(MEM)最高的前10个进程 输入 top 命令,然后按下大写M按照内存MEM排序,按下大写P按照CPU排序

    2024年02月17日
    浏览(54)
  • 编程题分享:有⼀堆糖果,其数量为n,现将糖果分成不同数量的堆数

    背景 近期面试遇到一家公司的编程题,觉得挺有参考价值 此处使用 PHP 语言,进行编码测试, 编码之前要进行思路分析,避免无头苍蝇,走一步看一步 最后,希望后期面试顺利!欢迎指摘 . 题目: 思路分析: 初始测试数据比较小,可以在草稿纸上穷举分配方案,寻找规律

    2024年02月11日
    浏览(38)
  • 两个有序表合并成一个有序表最少与最多的比较次数

    在数据结构(严蔚敏)第二章课后习题中有这样一个题,关于把两个有序表合并的操作比较次数 将两个各有 N 个元素的有序表归并成一个有序表,其最少的比较次数是( A )。 A.N B.2N -1 C.2N D.N -1 显然,比如A顺序表的最大值如果比B顺序表的最小值还要小,只需要拿B的最

    2024年02月10日
    浏览(45)
  • 「SQL面试题库」 No_33 好友申请 II :谁有最多的好友

    「SQL面试题库」是由 不是西红柿 发起,全员免费参与的SQL学习活动。我每天发布1道SQL面试真题,从简单到困难,涵盖所有SQL知识点,我敢保证只要做完这100道题,不仅能轻松搞定面试,代码能力和工作效率也会有明显提升。 1.1 活动流程 整理题目 :西红柿每天无论刮风下雨

    2024年02月01日
    浏览(41)
  • 从零开始学习iftop流量监控(找出服务器耗费流量最多的ip和端口)

    iftop是类似于top的实时流量监控工具。 作用:监控网卡的实时流量(可以指定网段)、反向解析IP、显示端口信息等 官网: http://www.ex-parrot.com/~pdw/iftop/ 一般参数 主机参数 端口显示参数 输出排序参数 1.显示网卡eth0的信息,主机通过ip显示 2.显示端口号(添加-P参数,进入界面

    2023年04月08日
    浏览(51)
  • 【Spark手机流量日志处理】使用SparkSQL按月统计流量使用量最多的用户

    🚀 作者 :“大数据小禅” 🚀 文章简介 :本篇文章属于Spark系列文章,专栏将会记录从spark基础到进阶的内容 🚀 内容涉及到Spark的入门集群搭建,核心组件,RDD,算子的使用,底层原理,SparkCore,SparkSQL,SparkStreaming等,Spark专栏地址.欢迎小伙伴们订阅💪 SparkSQL简介 Spark

    2023年04月15日
    浏览(47)
  • 题目:2511.最多可以摧毁的敌人城堡数量

    ​ 题目来源:         leetcode题目,网址:2511. 最多可以摧毁的敌人城堡数目 - 力扣(LeetCode) 解题思路:        顺序遍历数组,记录上一个我军城堡和没有城堡的位置。当碰到空位置时,若上一次更新的值为我军城堡,记录较大的摧毁数;当碰到我军城堡时,若上一次更

    2024年02月13日
    浏览(42)
  • uniapp - 超详细实现播放 svg / svga 格式动画组件插件,用于直播间赠送礼物特效动画或项目动画特效较多的应用(新手小白保姆级教程,提供插件+详细运行示例+使用文档+注意事项+格式说明)

    网上关于 uniapp 播放 svg / svga 格式动画的教程很乱,基本上全是 BUG 和各种不兼容,很难复制过来自己用。 本文实现了 在 uniapp 项目中(完美兼容 H5 / App / 微信小程序平台),播放 svg / svga 格式动画功能的详细介绍, 您只需要使用我提供的 “组件源码及插件”,放到项目中去

    2023年04月24日
    浏览(197)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包