Maximum Average Pass Ratio LeetCode solution in Java

1
class Solution {
2
public double maxAverageRatio(int[][] classes, int extraStudents) {
3
PriorityQueue<double[]> pq =
4
new PriorityQueue<>(
5
new Comparator<double[]>() {
6
public int compare(double[] a, double[] b) {
7
double adiff = (a[0] + 1) / (a[1] + 1) - (a[0] / a[1]);
8
double bdiff = (b[0] + 1) / (b[1] + 1) - (b[0] / b[1]);
9
if (adiff == bdiff) return 0;
10
return adiff > bdiff ? -1 : 1;
11
}
12
});
13

14
for (int[] c : classes) pq.add(new double[] {c[0], c[1]});
15

16
for (int i = 0; i < extraStudents; i++) {
17
double[] curr = pq.poll();
18
pq.add(new double[] {curr[0] + 1, curr[1] + 1});
19
}
20

21
double sum = 0;
22
while (!pq.isEmpty()) {
23
double[] curr = pq.poll();
24
sum += curr[0] / curr[1];
25
}
26

27
return sum / classes.length;
28
}
29
}

0

WPM •0 •0

100%

ACC •0 •0

0s

TIME •0