LeetCode1090. 受标签影响的最大值
问题:
我们有一个项的集合,其中第 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 <= 200000 <= values[i], labels[i] <= 200001 <= num_wanted, use_limit <= values.length
链接:https://leetcode-cn.com/contest/weekly-contest-141/problems/largest-values-from-labels/
分析:
给出一个项的集合,选出子集,要求和的最大值,其中选出至多num_wanted个数字,并且同一标签的个数不超过use_limit。
可以将原始输出的数据按照label作为可以,重构为map数据,value按照值排序。
那么可以从每个lable中选出不超过use_limit个数据,构架一个vector,最终结果出自这个vector,将vector排序,选出最大的num_wanted个求和即可。
AC Code:
 class Solution {
 public:
 int largestValsFromLabels(vector<int>& values, vector<int>& labels, int num_wanted, int use_limit) {
         int ret = ;
         map<int, vector<int> > alldata;
         vector<int> opdata;         for (int i = ; i < values.size(); i++)
         {
             alldata[labels[i]].emplace_back(values[i]);
         }
         for (map<int,vector<int> >::iterator it = alldata.begin(); it != alldata.end(); it++)
         {
             sort((*it).second.begin(), (*it).second.end());
             reverse((*it).second.begin(), (*it).second.end());
             int num = ;
             for (int i = ; i < (*it).second.size() && i < use_limit; i++)
             {
                 opdata.emplace_back((*it).second[i]);
             }
         }
         sort(opdata.begin(), opdata.end());
         reverse(opdata.begin(), opdata.end());
         for (int i = ; i < num_wanted && i<opdata.size(); i++)
         {
             ret += opdata[i];
         }
         return ret;
     }
 };
其他:
1,第一code:
    class Solution {
        public int largestValsFromLabels(int[] values, int[] labels, int num_wanted, int use_limit) {
            int n = values.length;
            int[][] ai = new int[n][];
            for(int i = ;i < n;i++){
                ai[i] = new int[]{values[i], labels[i]};
            }
            Arrays.sort(ai, new Comparator<int[]>() {
                public int compare(int[] a, int[] b) {
                    return a[] - b[];
                }
            });
            int[] f = new int[];
            int sum = ;
            int used = ;
            for(int i = n-;i >= ;i--){
                if(used < num_wanted && ++f[ai[i][]] <= use_limit){
                    sum += ai[i][];
                    used++;
                }
            }
            return sum;
        }
    }
第二C++代码:
class Solution {
public:
    int largestValsFromLabels(vector<int>& values, vector<int>& labels, int num_wanted, int use_limit) {
        vector< pair<int, int> > v;
        for(int i =  ; i < values.size() ; i++)
            v.push_back({values[i], labels[i]});
        sort(v.rbegin(), v.rend());
        int lc[] = {};
        int ans = ;
        int cc = ;
        for(int i =  ; i < v.size() ; i++){
            if( cc +  > num_wanted ) continue;
            int vv = v[i].first;
            int ll = v[i].second;
            if( lc[ll] +  > use_limit ){
                continue;
            }
            ans += vv;
            lc[ll]++;
            cc++;
        }
        return ans;
    }
};
2 vector sort默认升序,如果想要降序需要编写自定义比较函数,可以sort后reverse。
LeetCode1090. 受标签影响的最大值的更多相关文章
- 如何固定table表格宽度,样式不受容器影响
		
之前有篇关于LODOP打印超文本表格,两个样式相同的表格,出现错位的情况.该博文地址:LODOP打印表格错位的几种情况该文试验了两种现象,第一种浏览器页面显示错位,打印预览也错位,第二种浏览器页面表格 ...
 - OpenCV白平衡算法之灰度世界法(消除RGB受光照影响)
		
在用OpenCV对图像进行处理时,利用颜色定位是常常会接触到的方法,但RGB受光照影响比较严重,转换到HSV XYZ等空间也解决不了时, 可以用白平衡算法进行修正,使其发黄.发蓝.发红的照片更加趋于自 ...
 - bat性能效率受啥影响
		
代码效率的提升往往由算法决定,曾发过专贴(浅谈提高代码效率的编写习惯:http://tieba.baidu.com/p/1187281687),但是以实例为主,并没有太多的文字说明,现在归纳一下:影响 ...
 - Linux nohup命令应用简介--让Linux的进程不受终端影响
		
nohup命令应用简介--让Linux的进程不受终端影响 by:授客 QQ:1033553122 #开启ping进程 [root@localhost ~]# ping localhost & ...
 - 【咸鱼教程】基于系统时间的计时器DateTimer(不受FPS影响)
		
教程目录一 计时器简介二 计时器实现三 Demo下载 一 计时器简介在手机上跑游戏时,可能由于运动物体过多,导致帧频太低,计时不准确.比如一些倒计时的游戏,可能倒计时30s,变成了35s.比如ipho ...
 - 抢滩5G,哪些行业将受最大影响?
		
抢滩5G,哪些行业将受最大影响? 中国工信部6月6日已正式向中国电信.中国移动.中国联通.中国广电发放5G商用牌照.中国成为继韩国.美国.瑞士.英国之后,第五个宣布5G商用的国家. 这次颁发牌照,比计 ...
 - 通过HTML+CSS+JavaScript实现鼠标移动到页面顶部导航栏出现,如果移出导航栏3秒又隐藏起来,而且不受滚动条影响(二)
		
通过HTML+CSS+JavaScript实现鼠标移动到页面顶部导航栏出现,如果移出导航栏3秒又隐藏起来,而且不受滚动条影响(二) 效果:默认一直隐藏导航栏,当滚动条滚到超过300px按钮出现,点击回 ...
 - iOS开发小技巧--学会包装控件(有些view的位置由于代码或系统原因,位置或者尺寸不容易修改或者容易受外界影响)
		
一.百思项目中遇到了两处这样的问题, 第一处 - 是评论界面的headerView,由于直接把自己搞的xib加载了放在了那里,xib中setFrame写了好多-= +=,每次滚动的时候,会频繁调用x ...
 - 让边框和文本一样高,不受line-height影响,可以使用padding,padding可以用于行内元素
		
如果设置了,display:inline-block;边框大小至少和行高一样.这样就可能比文字高.
 
随机推荐
- PAT甲级——1111 Online Map (单源最短路经的Dijkstra算法、priority_queue的使用)
			
本文章同步发布在CSDN:https://blog.csdn.net/weixin_44385565/article/details/90041078 1111 Online Map (30 分) ...
 - 详解javascript中的this对象
			
详解javascript中的this对象 前言 Javascript是一门基于对象的动态语言,也就是说,所有东西都是对象,一个很典型的例子就是函数也被视为普通的对象.Javascript可以通过一定的 ...
 - C++文件操作方法小结
			
- 获取文件句柄 - fopen, fclose fopen(filename, opentype): 按照opentype的方式打开指定文件,打开失败返回NULL,否则返回文件句柄. 打开类型的属性 ...
 - Oracle .NET Core
			
Oracle .NET Core Beta驱动已出,自己动手写EF Core Oracle https://www.cnblogs.com/yanweidie/p/9064609.html 使用.ne ...
 - Token认证登录以及权限控制
			
IdentityServer4实现Token认证登录以及权限控制 相关知识点 不再对IdentityServer4做相关介绍,博客园上已经有人出了相关的系列文章,不了解的可以看一下: 蟋蟀大神的: ...
 - 爬虫(Xpath)——爬tieba.baidu.com
			
工具:python3 核心知识点: 1)lxml包不能用pip下载,因为里面有其他语言编写的文件 2)urlopen返回的请求是html文件,要使用 content = etree.HTML(html ...
 - Json规范
			
标准格式 书写使用首字母小写驼峰式 {" status":0 //状态 大于0代表正常.小于等于0代表异常 "message":"",/ ...
 - CDH5.7.2离线部署笔记
			
1.部署基本信息说明: 1.1.主机信息 操作系统:选择CentOS6.7 x86-64版本 MEM:64GB,CPU: E5-2630 v3 @ 2.40GHz, DISK:2TB*4(数据节点存储 ...
 - Could not load file or assembly 'Oracle.ManagedDataAccessDTC.DLL' or one of its dependencies.
			
Could not load file or assembly 'Oracle.ManagedDataAccessDTC.DLL' or one of its dependencies. 不是有效的 ...
 - 数据库操作是sql的操作1
			
项目过来以后, 查 先肯定是做UI , 1.在UI层先加载 2数据来源在dal层, 3再到model层,得到属性 public int MId { get; set; } public string ...