您的位置:首页 > 编程语言 > Python开发

LeetCode 1090. Largest Values From Labels解题报告(python)

2020-01-14 12:30 113 查看

1090. Largest Values From Labels

  1. Largest Values From Labels python solution

题目描述

We have a set of items: the i-th item has value values[i] and label labels[i].
Then, we choose a subset S of these items, such that:
|S| <= num_wanted
For every label L, the number of items in S with label L is <= use_limit.
Return the largest possible sum of the subset S.

解析

Example: values = [5,4,3,2,1], labels = [1,1,2,2,3], num_wanted = 3, use_limit = 1
在这里例子中,子集元素的个数<= 3
按照label将子集每个元素列出来
Label 1 -> [5,4]
Label 2 -> [3,2]
Label 3 -> [1]
现在对于每个label的元素我们,至多取一个,因为use_limit = 1
题目要求我们取子集元素和可能的最大值,所以在这个例子中
label 1 : 我们取 5,
label 2: 我们取 3
label 3: 我们取 1
5+3+1=9

class Solution:
def largestValsFromLabels(self, values: List[int], labels: List[int], num_wanted: int, use_limit: int) -> int:
count=collections.defaultdict(int)
pair = sorted(zip(values,labels))
sol=0
while num_wanted and pair:
value, label=pair.pop()
if count[label]<use_limit:
count[label]+=1
num_wanted-=1
sol+=value

return sol

Reference

https://leetcode.com/problems/largest-values-from-labels/discuss/312777/Simple-sort-in-python
https://leetcode.com/problems/largest-values-from-labels/discuss/313011/Question-Explanation-and-Simple-Solution-or-Java-or-100

  • 点赞
  • 收藏
  • 分享
  • 文章举报
orientliu96 发布了70 篇原创文章 · 获赞 0 · 访问量 398 私信 关注
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: