Maximum Performance of a Team LeetCode solution in Java

1
class Engineer {
2
int speed, efficiency;
3

4
Engineer(int speed, int efficiency) {
5
this.speed = speed;
6
this.efficiency = efficiency;
7
}
8
}
9

10
class Solution {
11
public int maxPerformance(int n, int[] speed, int[] efficiency, int k) {
12
List<Engineer> engineers = new ArrayList<>();
13
for (int i = 0; i < n; i++) {
14
engineers.add(new Engineer(speed[i], efficiency[i]));
15
}
16
engineers.sort((a, b) -> b.efficiency - a.efficiency);
17
PriorityQueue<Engineer> maxHeap = new PriorityQueue<>((a, b) -> a.speed - b.speed);
18
long maxPerformance = 0l, totalSpeed = 0l;
19
for (Engineer engineer : engineers) {
20
if (maxHeap.size() == k) {
21
totalSpeed -= maxHeap.poll().speed;
22
}
23
totalSpeed += engineer.speed;
24
maxHeap.offer(engineer);
25
maxPerformance = Math.max(maxPerformance, totalSpeed * (long) engineer.efficiency);
26
}
27
return (int) (maxPerformance % 1_000_000_007);
28
}
29
}

0

WPM •0 •0

100%

ACC •0 •0

0s

TIME •0