思路: 首先将 values 和 labels 组成一个二元组的数组 pairs,然后将数组 pairs 按照 values 从大到小排序。然后依次枚举排好序的数组 pairs,将其放入集合中,如果集合中相同标签的元素个数已经达到了 useLimit,则跳过该元素。最后计算集合中的元素的值之和即为最大分数。

代码实现:

Java 我们有一个 n 项的集合。给出两个整数数组 values 和 labels 第 i 个元素的值和标签分别是 valuesi 和 labelsi。还会给出两个整数 numWanted 和 useLimit 。从 n 个元素中选择一个子集 s 子集 s 的大小 小于或等于 numWanted 。s 中 最多 有相同标签的 useLimit 项。一个子集的 分数 是该子集的值之和。返回子集 s

原文地址: http://www.cveoy.top/t/topic/gdLm 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录