5359. 最大的团队表现值
公司有编号为 1 到 n 的 n 个工程师,给你两个数组 speed 和 efficiency ,其中 speed[i] 和 efficiency[i] 分别代表第 i 位工程师的速度和效率。请你返回由最多 k 个工程师组成的 最大团队表现值 ,由于答案可能很大,请你返回结果对 10^9 + 7 取余后的结果。
团队表现值 的定义为:一个团队中「所有工程师速度的和」乘以他们「效率值中的最小值」。
from queue import PriorityQueue
class Solution:
def maxPerformance(self, n: int, speed: List[int], efficiency: List[int], k: int) -> int:
arr = [(speed[i], efficiency[i]) for i in range(n)]
arr.sort(key=lambda item:item[1], reverse=True)
pq = PriorityQueue()
sumk = 0
res = 0
MOD = 10**9 + 7
for i in range(n):
pq.put(arr[i][0])
sumk += arr[i][0]
if pq.qsize() > k:
sumk -= pq.get()
#若包含arr[i]则tempt为团队值,如果不包含则tempt < res
tempt = sumk * arr[i][1]
if tempt > res:
res = tempt
return res % MOD
网友评论