OJ练习第112题——受标签影响的最大值

这篇具有很好参考价值的文章主要介绍了OJ练习第112题——受标签影响的最大值。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

受标签影响的最大值

力扣链接:1090. 受标签影响的最大值

题目描述

我们有一个 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
解释:选出的子集是第一项,第二项和第三项。

Java代码

class Solution {
    public int largestValsFromLabels(int[] values, int[] labels, int numWanted, int useLimit) {
        int count[] = new int[20001], n = labels.length;
        Integer index[] = new Integer[n];
        for(int i = 0; i < n; i++) {
            index[i] = i;
        }
        Arrays.sort(index, (a, b) -> values[b] - values[a]);
        int res = 0;
        for(int i = 0; i < n && numWanted > 0; i++, numWanted--) {
            while(i < n && count[labels[index[i]]] >= useLimit) i++;
            if(i < n) {
                res += values[index[i]];
                count[labels[index[i]]]++;
            }
        }
        return res;
    }
}

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

到了这里,关于OJ练习第112题——受标签影响的最大值的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • js求数组最大值

    除了使用 Math.max() 方法之外,JavaScript 中还有多种方法可以求数组的最大值,下面介绍其中的几种。 使用循环遍历数组并比较 可以使用 for 循环遍历数组,并使用一个变量来保存数组中的最大值。每当遇到一个比当前最大值大的元素时,更新变量的值。例如: 使用 apply() 方法

    2024年02月16日
    浏览(40)
  • layui 设置选中时间为当天时间最大值23:59:59、laydate设置选中时间为当天时间最大值23:59:59

    既是涨知识的一天,又是干前端的一天! laydate.render({         elem: \\\'#validityPeriod\\\',         //type: \\\'datetime\\\',//类型要一定要相匹配         type: \\\'date\\\', // 设置日期选择模式         trigger: \\\'click\\\',         format: \\\'yyyy-MM-dd HH:mm:ss\\\', // 设置日期的显示格式         min: startDate,    

    2024年02月15日
    浏览(32)
  • 求二维数组中元素最大值

    题目描述 求二维数组中元素的最大值。 答案 输入 有多组测试数据。 对于每组测试数据,先输入m和n,表示二维数组有m行n列。m或n为0,则结束。(1=m,n=100) 然后输入m*n个整数,即输入各个二维数组元素。 输出 对应输出二维数组的最大值。 样例输入  Copy 样例输出  Copy

    2024年02月11日
    浏览(56)
  • LeetCode239.滑动窗口最大值

    看到这道题我就有印象, 我在剑指offer里面做过这道题,我记得当时用的是优先队列,然后我脑子里一下子就有了想法,拿优先队列作为窗口,每往右移动一步,把左边的数remove掉,把右边的数add进来,然后把队头,也就是窗口中最大的元素放入答案数组,然后就写出了如下

    2024年02月11日
    浏览(44)
  • 生成窗口最大值数组【中等难度】

    给定一个整数数组 nums 和一个正整数 k,滑动一个大小为 k 的窗口,从数组的左边到右边,找到每个窗口中的最大值。 示例 1: 输入:nums = {1, 3, -1, -3, 5, 3, 6, 7} 、k = 3 输出:3 3 5 5 6 7 我们可以使用双端队列(deque)来解决这个问题。双端队列可以在两端进行插入和删除操作,

    2024年02月12日
    浏览(47)
  • 华为OD-滑动窗口最大值

    给你一个整数数组  nums ,有一个大小为  k   的滑动窗口从数组的最左侧移动到数组的最右侧。你只可以看到在滑动窗口内的  k  个数字。滑动窗口每次只向右移动一位。 返回  滑动窗口中的最大值  。 示例二 代码实现

    2024年02月11日
    浏览(40)
  • 删除最大值-C语言实现

    题目描述:输入 10 个互不相同的整数并保存在数组中,找到该最大元素并删除它,输出删除后的数组 请仔细阅读右侧代码,结合相关知识,在 Begin-End 区域内进行代码补充,完成编写删除最大值的小程序。 输入 输入 10 个互不相同整数 输出 输出删除最大元素后的数组 平台会

    2024年02月04日
    浏览(42)
  • leetcode-239-滑动窗口最大值

    题意描述: 给你一个整数数组 nums,有一个大小为 k 的滑动窗口从数组的最左侧移动到数组的最右侧。你只可以看到在滑动窗口内的 k 个数字。滑动窗口每次只向右移动一位。 返回 滑动窗口中的最大值 。 示例: 输入:nums = [1,3,-1,-3,5,3,6,7], k = 3 输出:[3,3,5,5,6,7] 解释: 滑动

    2024年02月07日
    浏览(49)
  • 基于遗传算法求函数最大值

    首先说一下作业题目:   设定求解精确到2位小数,种群规模: 50,最大进化代数: 150,交叉概率: Pc=0.25,变异概率: Pm=0.01 。 本次算法编程思想来源于http://t.csdn.cn/7wsRq。主要是理解遗传算法的设计过程。遗传算法的进化过程类似一个物种的进化过程,寻找函数最大值的过程就

    2024年02月08日
    浏览(44)
  • MATLAB-最大值与最小值

    在MATLAB中,用于计算最大值的函数是max函数,用于计算最小值的函数是min函数,其调用格式如下。 B=max(A) %计算最大值 ,若A为向量,则计算并返回向量中的最大值;若A为矩阵,则计算并返回 %一个含有各列最大值的行向量 B=min(A) %计算最小值 若A为向量,则计算并返回向量中的最

    2024年02月07日
    浏览(41)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包