1. 题目

我们有一个项的集合,其中第 i 项的值为 values[i],标签为 labels[i]。

我们从这些项中选出一个子集 S,这样一来:

  • |S| <= num_wanted
  • 对于任意的标签 L,子集 S 中标签为 L 的项的数目总满足 <= use_limit。

返回子集 S 的最大可能的 和。

示例 1:
输入:values = [5,4,3,2,1], labels = [1,1,2,2,3],
num_wanted = 3, use_limit = 1
输出:9
解释:选出的子集是第一项,第三项和第五项。示例 2:
输入:values = [5,4,3,2,1], labels = [1,3,3,3,2],
num_wanted = 3, use_limit = 2
输出:12
解释:选出的子集是第一项,第二项和第三项。示例 3:
输入:values = [9,8,8,7,6], labels = [0,0,0,1,1],
num_wanted = 3, use_limit = 1
输出:16
解释:选出的子集是第一项和第四项。示例 4:
输入:values = [9,8,8,7,6], labels = [0,0,0,1,1],
num_wanted = 3, use_limit = 2
输出:24
解释:选出的子集是第一项,第二项和第四项。提示:
1 <= values.length == labels.length <= 20000
0 <= values[i], labels[i] <= 20000
1 <= num_wanted, use_limit <= values.length

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/largest-values-from-labels
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

2. 解题

  • 数据按标签分入各自的优先队列中
  • 每个优先队列取出前面最大的 use_limit 个到一个大的优先队列 q 中
  • 把 q 中的前 num_wanted 个取出来求和就是答案
class Solution {public:int largestValsFromLabels(vector<int>& values, vector<int>& labels, int num_wanted, int use_limit) {vector<priority_queue<int>> countUse(20001);//for(int i = 0; i < values.size(); ++i)countUse[labels[i]].push(values[i]);int k, sum = 0;priority_queue<int> q;for(int i = 0; i <= 20000; ++i){k = use_limit;while(k-- && !countUse[i].empty()){q.push(countUse[i].top());countUse[i].pop();}}while(num_wanted-- && !q.empty()){sum += q.top();q.pop();}return sum;}
};

200 ms 77.2 MB

LeetCode 1090. 受标签影响的最大值(优先队列)相关推荐

  1. leetcode1090. 受标签影响的最大值(贪心算法)

    我们有一个项的集合,其中第 i 项的值为 values[i],标签为 labels[i]. 我们从这些项中选出一个子集 S,这样一来: |S| <= num_wanted 对于任意的标签 L,子 ...

  2. 中国AI应用最新白皮书:四大行业将受AI影响最大,或带来19000亿增益价值

    白皮书指出,中国AI企业的发展势头良好,在全球处于优先地位;金融.汽车.医疗和零售将是受AI影响最大.同时最具成熟发展基础与市场应用潜力的传统产业,制造.教育和通信行业也值得关注. 编者按:在第三次人 ...

  3. 【咸鱼教程】基于系统时间的计时器DateTimer(不受FPS影响)

    教程目录 一 计时器简介 二 计时器实现 三 Demo下载 一 计时器简介 在手机上跑游戏时,可能由于运动物体过多,导致帧频太低,计时不准确. 比如一些倒计时的游戏,可能倒计时30s,变成了35s. ...

  4. linux使进程不依赖终端,Linux nohup命令应用简介--让Linux的进程不受终端影响

    nohup命令应用简介--让Linux的进程不受终端影响 by:授客 QQ:1033553122 #开启ping进程 [root@localhost ~]# ping localhost & ...

  5. unity5.x C# 获取屏幕宽度 设置不受重力影响

    在unity5.x中,获取屏幕宽度代码如下: float screenWeight = Screen.width; //获取屏幕宽度 Screen.width 在此获取屏幕的宽度,从而赋值给scree ...

  6. 洛谷1417烹调方案——动态规划:价值受时间影响

    题目:https://www.luogu.org/problemnew/show/P1417 与01背包的不同在于价值受时间影响. 对第i个物品的遍历有一个先后顺序,在01背包里顺序不影响,但此时顺序 ...

  7. ue4 怎么传递变量到另一个蓝图_[UE4蓝图]虚幻4中实现简易天气系统(三)—— 受风力影响的Cascade雨水粒子...

    上一篇: 架狙只打脚:[UE4蓝图]虚幻4中实现简易天气系统(二)-- 随机风力​zhuanlan.zhihu.com Cascade就是现在UE4中正在使用的ParticleSystem. 制作雨水 ...

  8. 医疗项目 开源_医疗保健受开源影响最大的行业之一

    医疗项目 开源 医疗保健是当今时代最紧迫的社会经济问题之一. 今年,Opensource.com看到了许多有关采用开源方式和开源软件(包括工具)来缓解医疗保健行业所面临的许多问题的新闻和专题报道. 这 ...

  9. 受疫情影响 MWC 2020正式取消

    [TechWeb]2月13日,世界移动通信大会(MWC)的组织者GSMA官网发布了标题为"GSMA有限公司首席执行官John Hoffman关于2020年巴塞罗那MWC的声明"的公 ...

最新文章

  1. pandas使用normalize函数将dataframe中的时间(time)数据列转化为日期(date)数据列(例如,从2019-12-25 11:30:00到2019-12-25)
  2. 企业开发中,git提交时屏蔽某些文件,怎么搞!【idea的处理方法】
  3. ShopEx 手动使用分类做导航时,获取当前导航的焦点状态
  4. 乘法口诀表的C语言编程
  5. 推荐12款非常有用的流行 jQuery 插件
  6. LVS+Heartbeat+Ipvsadm+Ldirectord安装 (一)
  7. PyCharm大全(转)
  8. php url参数用–,php获取URL各部分参数
  9. Java中的静态变量、静态方法问题
  10. 一道经典面试题的不同解法
  11. Facade(装饰模式)
  12. 线性可分支持向量机与硬间隔最大化
  13. matlab太阳系行星,Matlab动画模拟太阳系行星运动.doc
  14. 游戏角色是怎么动起来的?3D游戏动画系统介绍
  15. 简单题 6 清点代码库 (25 分)
  16. python安装需要什么电脑配置_自学python用什么配置电脑?
  17. 谷歌亚马逊或遭英国监管;昔日“大数据第一股”面临退市;特斯拉辅助驾驶系统索赔案胜诉丨每日大事件...
  18. 一年节气查询阳历日期与节气名称
  19. HTML5生日祝福蛋糕页面(生日蛋糕树) HTML+CSS+JS 求婚 html生日快乐祝福代码网页 520情人节告白代码 程序员表白源码 抖音3D旋转相册 js烟花代码 css爱心
  20. 迭代一感想总结 - 赵雷彧

热门文章

  1. Downloader Middlewares反反爬虫【学习笔记04】
  2. 深入浅出WPF之Binding的使用(二)
  3. redis的java客户端名称_java里常用的redis客户端简介
  4. java取模多位数_JAVA大数类—基础操作(加减乘除、取模、四舍五入、设置保留位数)...
  5. linux unix shell programming,UnixampLinux Shell Programming I.ppt
  6. LESS实战::not与:hover混合使用
  7. 20190501-编写一个函数来查找字符串数组中的最长公共前缀。如果不存在公共前缀,返回空字符串...
  8. 面向对象与软件工程—团队作业1
  9. Cron表达式 详解
  10. 高程(三)笔记---- 第三章