周赛题目 算简单的 Hard题目
优先队列
用efficiency 倒叙排列,每次弹出一个作为当前的 efficiency, 并把对应的speed放入heap中,如果heap长度大于k,则弹出一个最小的,每次一轮更新当前最大值
复杂度 O(nlogn) 主要用于对e排序
python3 代码
class Solution:
def maxPerformance(self, n: int, speed: List[int], efficiency: List[int], k: int) -> int:
h, curS, ans = [], 0, 0
for e, s in sorted(zip(efficiency, speed), reverse = True):
curS += s
heapq.heappush(h, s)
if len(h) > k:
k -= 1
curS -= heapq.heappop(h)
ans = max(ans, e*curS)
return ans%(10**9+7)