受标签影响的最大值

2023-11-10

题目描述

我们有一个 n 项的集合。给出两个整数数组 values 和 labels ,第 i 个元素的值和标签分别是 values[i] 和 labels[i]。还会给出两个整数 numWanted 和 useLimit 。

从 n 个元素中选择一个子集 s :

子集 s 的大小 小于或等于 numWanted 。
s 中 最多 有相同标签的 useLimit 项。
一个子集的 分数 是该子集的值之和。

返回子集 s 的最大 分数 。

示例 1:

输入:values = [5,4,3,2,1], labels = [1,1,2,2,3], numWanted = 3, useLimit = 1
输出:9
解释:选出的子集是第一项,第三项和第五项。
示例 2:

输入:values = [5,4,3,2,1], labels = [1,3,3,3,2], numWanted = 3, useLimit = 2
输出:12
解释:选出的子集是第一项,第二项和第三项。
示例 3:

输入:values = [9,8,8,7,6], labels = [0,0,0,1,1], numWanted = 3, useLimit = 1
输出:16
解释:选出的子集是第一项和第四项。

提示:

n == values.length == labels.length
1 <= n <= 2 * 104
0 <= values[i], labels[i] <= 2 * 104
1 <= numWanted, useLimit <= n

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

分析

对于useLimit,我们可以用hashmap将标签相同的元素存入一个list集合中,然后对集合进行排序,选取前useLimit个数加入最终进行选取的list中。
然后将最终的list进行排序选取前numWanted个数求和返回即可。

代码

class Solution {
    public int largestValsFromLabels(int[] values, int[] labels, int numWanted, int useLimit) {
        HashMap<Integer,List<Integer>> map=new HashMap<>();
        int n=values.length;
        for(int i=0;i<n;i++){
            if(map.containsKey(labels[i])==false){
                List<Integer> list=new ArrayList<>();
                list.add(values[i]);
                map.put(labels[i],list);
            }else{
                map.get(labels[i]).add(values[i]);
            }
        }
        List<Integer> li=new ArrayList<>();
        for(int k:map.keySet()){
            List<Integer> list1=map.get(k);
            Collections.sort(list1, new Comparator<Integer>() {
                @Override
                public int compare(Integer o1, Integer o2) {
                    return o2-o1;
                }
            });
            for(int j=0;j<list1.size() && j<useLimit;j++){
                li.add(list1.get(j));
            }
        }
        Collections.sort(li, new Comparator<Integer>() {
            @Override
            public int compare(Integer o1, Integer o2) {
                return o2-o1;
            }
        });
        int res=0;
        for(int u=0;u<numWanted && u<li.size();u++){
            res+=li.get(u);
        }
        return res;
    }
}

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

受标签影响的最大值 的相关文章

  • Java 中等效的并行扩展

    我在 Net 开发中使用并行扩展有一些经验 但我正在考虑在 Java 中做一些工作 这些工作将受益于易于使用的并行库 JVM 是否提供任何与并行扩展类似的工具 您应该熟悉java util concurrent http java sun
  • 如何默认将 Maven 插件附加到阶段?

    我有一个 Maven 插件应该在编译阶段运行 所以在项目中consumes我的插件 我必须做这样的事情
  • 为什么 i++ 不是原子的?

    Why is i Java 中不是原子的 为了更深入地了解 Java 我尝试计算线程中循环的执行频率 所以我用了一个 private static int total 0 在主课中 我有两个线程 主题 1 打印System out prin
  • Play框架运行应用程序问题

    每当我尝试运行使用以下命令创建的新 Web 应用程序时 我都会收到以下错误Play http www playframework org Error occurred during initialization of VM Could no
  • 在 java 类和 android 活动之间传输时音频不清晰

    我有一个android活动 它连接到一个java类并以套接字的形式向它发送数据包 该类接收声音数据包并将它们扔到 PC 扬声器 该代码运行良好 但在 PC 扬声器中播放声音时会出现持续的抖动 中断 安卓活动 public class Sen
  • 在 HTTPResponse Android 中跟踪重定向

    我需要遵循 HTTPost 给我的重定向 当我发出 HTTP post 并尝试读取响应时 我得到重定向页面 html 我怎样才能解决这个问题 代码 public void parseDoc final HttpParams params n
  • Android MediaExtractor seek() 对 MP3 音频文件的准确性

    我在使用 Android 时无法在eek 上获得合理的准确度MediaExtractor 对于某些文件 例如this one http www archive org download emma solo librivox emma 01
  • 加速代码 - 3D 数组

    我正在尝试提高我编写的一些代码的速度 我想知道从 3d 整数数组访问数据的效率如何 我有一个数组 int cube new int 10 10 10 我用价值观填充其中 然后我访问这些值数千次 我想知道 由于理论上所有 3d 数组都存储在内
  • 列出jshell中所有活动的方法

    是否有任何命令可以打印当前 jshell 会话中所有新创建的方法 类似的东西 list但仅适用于方法 您正在寻找命令 methods all 它会打印所有方法 包括启动 JShell 时添加的方法 以及失败 被覆盖或删除的方法 对于您声明的
  • Liferay ClassNotFoundException:DLFileEntryImpl

    在我的 6 1 0 Portal 实例上 带有使用 ServiceBuilder 和 DL Api 的 6 1 0 SDK Portlet 这一行 DynamicQuery query DynamicQueryFactoryUtil for
  • 磁模拟

    假设我在 n m 像素的 2D 表面上有 p 个节点 我希望这些节点相互吸引 使得它们相距越远吸引力就越强 但是 如果两个节点之间的距离 比如 d A B 小于某个阈值 比如 k 那么它们就会开始排斥 谁能让我开始编写一些关于如何随时间更新
  • 我可以使用 HSQLDB 进行 junit 测试克隆 mySQL 数据库吗

    我正在开发一个 spring webflow 项目 我想我可以使用 HSQLDB 而不是 mysql 进行 junit 测试吗 如何将我的 mysql 数据库克隆到 HSQLDB 如果您使用 spring 3 1 或更高版本 您可以使用 s
  • 如何在PreferenceActivity中添加工具栏

    我已经使用首选项创建了应用程序设置 但我注意到 我的 PreferenceActivity 中没有工具栏 如何将工具栏添加到我的 PreferenceActivity 中 My code 我的 pref xml
  • 为什么HashMap不能保证map的顺序随着时间的推移保持不变

    我在这里阅读有关 Hashmap 和 Hashtable 之间的区别 http javarevisited blogspot sg 2010 10 difference Between hashmap and html http javar
  • 总是使用 Final?

    我读过 将某些东西做成最终的 然后在循环中使用它会带来更好的性能 但这对一切都有好处吗 我有很多地方没有循环 但我将 Final 添加到局部变量中 它会使速度变慢还是仍然很好 还有一些地方我有一个全局变量final 例如android Pa
  • 如何在桌面浏览器上使用 webdriver 移动网络

    我正在使用 selenium webdriver 进行 AUT 被测应用程序 的功能测试自动化 AUT 是响应式网络 我几乎完成了桌面浏览器的不同测试用例 现在 相同的测试用例也适用于移动浏览器 因为可以从移动浏览器访问 AUT 由于它是响
  • 静态变量的线程安全

    class ABC implements Runnable private static int a private static int b public void run 我有一个如上所述的 Java 类 我有这个类的多个线程 在里面r
  • 编译器抱怨“缺少返回语句”,即使不可能达到缺少返回语句的条件

    在下面的方法中 编译器抱怨缺少退货声明即使该方法只有一条路径 并且它包含一个return陈述 抑制错误需要另一个return陈述 public int foo if true return 5 鉴于Java编译器可以识别无限循环 https
  • JGit 检查分支是否已签出

    我正在使用 JGit 开发一个项目 我设法删除了一个分支 但我还想检查该分支是否已签出 我发现了一个变量CheckoutCommand但它是私有的 private boolean isCheckoutIndex return startCo
  • java.lang.IllegalStateException:驱动程序可执行文件的路径必须由 webdriver.chrome.driver 系统属性设置 - Similiar 不回答

    尝试学习 Selenium 我打开了类似的问题 但似乎没有任何帮助 我的代码 package seleniumPractice import org openqa selenium WebDriver import org openqa s

随机推荐

  • Phaser.js教程

    从零到一 用Phaser js写意地开发小游戏 https segmentfault com a 1190000009212221
  • python列表排序方法-python list排序的两种方法及实例讲解

    对List进行排序 Python提供了两个方法 方法1 用List的内建函数list sort进行排序 list sort func None key None reverse False Python实例 1 2 3 4 5 6 gt g
  • 移动网络运营商显示无服务器,无线路由器忽然拨不上号,显示网络运营商远端无响应怎么处理...

    如果是有猫的环境 1 就从猫的哪个接口连接网线到路由WAN口 1 如果不需要拨号就可以上网 看下电脑平时不接路由器是连在猫的哪个接口上网 4 10M选择10M全双工 点击系统工具 重启路由器 超易安装界面的路由器1 祝您工作顺利 如果还是网
  • 人工智能革命:超级智能之路(上)

    这篇文章翻译于Tim Urban大神的 The AI Revolution 的系列文章 下面让我们一起领略一下Tim Urban大神理解的人工智能革命是怎样的吧 文章目录 遥远的未来 即将到来 超级智能之路 人工智能 我们目前在哪里 一个在
  • Echarts重绘报错 The image argument is a canvas element with a width or height of 0

    Echarts重绘报错 原因在于绘制时 未正确获取到画布的宽高 在容器内写入行内样式 即可解决
  • Unity 3D 人形角色动画(Avatar)||Unity 3D 导航系统||Unity 3D 障碍物

    Unity 3D 人形角色动画 Avatar Mecanim 动画系统适合人形角色动画的制作 人形骨架是在游戏中普遍采用的一种骨架结构 由于人形骨架在骨骼结构上的相似性 用户可以将动画效果从一个人形骨架映射到另一个人形骨架 从而实现动画重定
  • 基础入门-数据包拓展

    Request请求数据包数据格式 1 请求行 请求类型 请求资源路径 协议的版本和类型 2 请求头 一些键值对 浏览器与 web 服务器之间都可以发送 特定的某种含义 3 空行 请求头与请求体之间用一个空行隔开 4 请求体 要发送的数据 一
  • 22-Go操作mysql

    安装mysql docker快速启动一个MySQL Server容器 docker run name mysql8019 p 3306 13306 d e MYSQL ROOT PASSWORD root1234 mysql 8 0 19
  • 编译原理递归下降分析器(语法分析器)(C/C++)

    include
  • dumpbin.exe简要使用说明

    该工具可以查看 exe的依赖文件 查看dll的导入及导出符号等 在命令行中输入dumpbin并回车 可显示所有选项 主要选项有 ALL 此选项显示除代码反汇编外的所有可用信息 可以与 RAWDATA NONE一起省略文件的原始二进制详细资料
  • Unity预制体Prefab及其实例化(Instantiate)

    简介 在Unity3D工程建设中 Prefabs 预设 是很常用的一种资源类型 是一种可以被重复使用的游戏对象 可以被置入多个场景中 也可以在一个场景中多次置入 在场景中增加一个Prefab 就是实例化了一个Prefab 所有的Prefab
  • Tensorflow 激活函数 activation function

    激活函数 activation function 线性模型的局限性 只通过线性变换 任意层的全连接神经网络和单层神经网络的表达能力并没有任何区别 线性模型能解决的问题是有限的 激活函数的目的是去线性化 如果将每一个神经元的输出通过一个非线性
  • nrm指令报错解决

    今天打算安装切换公司内部的npm源 出现报错 以下为全过程与解决方案 先全局安装nrm npm install nrm g 添加公司的registry nrm add 出现报错 Error ERR REQUIRE ESM require o
  • 多个字段同时去重

    首先创建一个表结构 其中数据如下 根据上面的name age sex三个字段进行去重 去重思想 说到去重 大家想到的肯定是distinct这个关键字 但这个关键字他只能对一个字段进行去重 那么如何同时根据这三个字段去重呢 办法就是把这三个字
  • 用户登录的详细流程(一)

    用户登录的详细流程 1 流程概述 1 首先在进行用户登录的时候 要进行一些必要的准备工作 比如说要对用户登录表进行设计 一般是userId userName phone password salt remark等等 通常数据库存储的密码是m
  • vue3中ts全局声明再.vue文件中显示no-undef

    显示错误xxx is not defined eslintno undef 解决方法 参考 Why Eslint don t see global TypeScript types in vue files no undef 在 eslin
  • 目前流行前端几大UI框架排行榜

    在前端项目开发过程中 总是会引入一些UI框架 已为方便自己的使用 很多大公司都有自己的一套UI框架 下面就是最近经常使用并且很流行的UI框架 一 Mint UI 流行指数 Mint UI是 饿了么团队开发基于vue js的移动端UI框架 它
  • python实现:提取文件夹中子文件夹的图片

    提取文件夹中子文件里的图片的方法 主要运用到的函数 import os import shutil 首先需要获取内部文件夹的文件名 os chdir D 作业 python 数据集 if masked AFDB masked face da
  • vue面试题汇总

    HTML篇 CSS篇 JS篇 TypeScript篇 React篇 微信小程序篇 前端面试题汇总大全 含答案超详细 HTML JS CSS汇总篇 持续更新 前端面试题汇总大全二 含答案超详细 Vue TypeScript React 微信小
  • 受标签影响的最大值

    题目描述 我们有一个 n 项的集合 给出两个整数数组 values 和 labels 第 i 个元素的值和标签分别是 values i 和 labels i 还会给出两个整数 numWanted 和 useLimit 从 n 个元素中选择一