当前位置:首页 > 编程笔记 > 正文
已解决

2023-10-28 LeetCode每日一题(从数量最多的堆取走礼物)

来自网友在路上 184884提问 提问时间:2023-10-28 14:54:46阅读次数: 84

最佳答案 问答题库848位专家为你答疑解惑

2023-10-28每日一题

一、题目编号

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

二、题目链接

点击跳转到题目位置

三、题目描述

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

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

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

示例1:在这里插入图片描述
示例2:
在这里插入图片描述
提示:

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

四、解题代码

class Solution {priority_queue<int> q;
public:long long pickGifts(vector<int>& gifts, int k) {for(int i = 0; i < gifts.size(); ++i){q.push(gifts[i]);}while(k != 0){k--;int num = q.top();q.pop();num = sqrt(num);q.push(num);}long long sum = 0;while(!q.empty()){sum += q.top();q.pop();}return sum;}
};

五、解题思路

(1) 队列

查看全文

99%的人还看了

猜你感兴趣

版权申明

本文"2023-10-28 LeetCode每日一题(从数量最多的堆取走礼物)":http://eshow365.cn/6-26875-0.html 内容来自互联网,请自行判断内容的正确性。如有侵权请联系我们,立即删除!