網(wǎng)站商城建站谷歌 翻墻入口
思路:根據(jù)值從大到小排序,然后在加的時(shí)候判斷是否達(dá)到標(biāo)簽上限即可,一開(kāi)始想用字典做,但是題目說(shuō)是集合卻連續(xù)出現(xiàn)兩個(gè)8,因此使用元組+SortedList進(jìn)行解決
class Solution:def largestValsFromLabels(self, values: list[int], labels: list[int], numWanted: int, useLimit: int) -> int:from sortedcontainers import SortedListfrom collections import defaultdictsorted_values = SortedList()for num in range(0, len(labels)):sorted_values.add((values[num], labels[num]))total_sum = 0label_dict = defaultdict(int)for value_label in reversed(sorted_values):value = value_label[0]label = value_label[1]if label_dict[label] < useLimit:if numWanted > 0:numWanted -= 1total_sum += valuelabel_dict[label] += 1else:return total_sumreturn total_sum