Skip to content

Commit cfe15a0

Browse files
committed
refactor: solution 1792. Maximum Average Pass Ratio
1 parent 39510bd commit cfe15a0

File tree

2 files changed

+32
-20
lines changed

2 files changed

+32
-20
lines changed

solutions/1792. Maximum Average Pass Ratio/README.md

Lines changed: 16 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -55,28 +55,34 @@
5555
* @return {number}
5656
*/
5757
const maxAverageRatio = function (classes, extraStudents) {
58-
const queue = new MaxPriorityQueue({ priority: x => x.ratio });
58+
const n = classes.length;
59+
const maxHeap = new MaxPriorityQueue(({ additionRatio }) => additionRatio);
60+
let totalRatio = 0;
61+
5962
const enqueue = (pass, total) => {
60-
const beforeRatio = pass / total;
61-
const afterRatio = (pass + 1) / (total + 1);
63+
const ratio = pass / total;
64+
const assignRatio = (pass + 1) / (total + 1);
6265

63-
queue.enqueue({ pass, total, ratio: afterRatio - beforeRatio });
66+
maxHeap.enqueue({ pass, total, additionRatio: assignRatio - ratio });
6467
};
65-
let totalRatio = 0;
6668

6769
for (const [pass, total] of classes) {
6870
enqueue(pass, total);
6971
}
70-
while (extraStudents--) {
71-
const { pass, total } = queue.dequeue().element;
72+
73+
while (extraStudents) {
74+
const { pass, total } = maxHeap.dequeue();
7275

7376
enqueue(pass + 1, total + 1);
77+
extraStudents -= 1;
7478
}
75-
while (!queue.isEmpty()) {
76-
const { pass, total } = queue.dequeue().element;
79+
80+
while (maxHeap.size()) {
81+
const { pass, total } = maxHeap.dequeue();
7782

7883
totalRatio += pass / total;
7984
}
80-
return totalRatio / classes.length;
85+
86+
return totalRatio / n;
8187
};
8288
```

solutions/1792. Maximum Average Pass Ratio/solution.js

Lines changed: 16 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -4,27 +4,33 @@
44
* @return {number}
55
*/
66
const maxAverageRatio = function (classes, extraStudents) {
7-
const queue = new MaxPriorityQueue({ priority: x => x.ratio });
7+
const n = classes.length;
8+
const maxHeap = new MaxPriorityQueue(({ additionRatio }) => additionRatio);
9+
let totalRatio = 0;
10+
811
const enqueue = (pass, total) => {
9-
const beforeRatio = pass / total;
10-
const afterRatio = (pass + 1) / (total + 1);
12+
const ratio = pass / total;
13+
const assignRatio = (pass + 1) / (total + 1);
1114

12-
queue.enqueue({ pass, total, ratio: afterRatio - beforeRatio });
15+
maxHeap.enqueue({ pass, total, additionRatio: assignRatio - ratio });
1316
};
14-
let totalRatio = 0;
1517

1618
for (const [pass, total] of classes) {
1719
enqueue(pass, total);
1820
}
19-
while (extraStudents--) {
20-
const { pass, total } = queue.dequeue().element;
21+
22+
while (extraStudents) {
23+
const { pass, total } = maxHeap.dequeue();
2124

2225
enqueue(pass + 1, total + 1);
26+
extraStudents -= 1;
2327
}
24-
while (!queue.isEmpty()) {
25-
const { pass, total } = queue.dequeue().element;
28+
29+
while (maxHeap.size()) {
30+
const { pass, total } = maxHeap.dequeue();
2631

2732
totalRatio += pass / total;
2833
}
29-
return totalRatio / classes.length;
34+
35+
return totalRatio / n;
3036
};

0 commit comments

Comments
 (0)