沈阳微信网站建设,东阳网络推广公司,太原百度公司地址,龙岩kk网一所学校里有一些班级#xff0c;每个班级里有一些学生#xff0c;现在每个班都会进行一场期末考试。给你一个二维数组 classes #xff0c;其中 classes[i] [passi, totali] #xff0c;表示你提前知道了第 i 个班级总共有 totali 个学生#xff0c;其中只有 passi 个学…一所学校里有一些班级每个班级里有一些学生现在每个班都会进行一场期末考试。给你一个二维数组 classes 其中 classes[i] [passi, totali] 表示你提前知道了第 i 个班级总共有 totali 个学生其中只有 passi 个学生可以通过考试。
给你一个整数 extraStudents 表示额外有 extraStudents 个聪明的学生他们 一定 能通过任何班级的期末考。你需要给这 extraStudents 个学生每人都安排一个班级使得 所有 班级的 平均 通过率 最大 。
一个班级的 通过率 等于这个班级通过考试的学生人数除以这个班级的总人数。平均通过率 是所有班级的通过率之和除以班级数目。
请你返回在安排这 extraStudents 个学生去对应班级后的 最大 平均通过率。与标准答案误差范围在 10-5 以内的结果都会视为正确结果。 示例 1
输入classes [[1,2],[3,5],[2,2]], extraStudents 2 输出0.78333 解释你可以将额外的两个学生都安排到第一个班级平均通过率为 (3/4 3/5 2/2) / 3 0.78333 。 示例 2
输入classes [[2,4],[3,9],[4,5],[2,10]], extraStudents 4 输出0.53485
提示
1 classes.length 105 classes[i].length 2 1 passi totali 105 1 extraStudents 105 来源力扣LeetCode 链接https://leetcode.cn/problems/maximum-average-pass-ratio * param {number[][]} classes* param {number} extraStudents* return {number}*/
var maxAverageRatio function (classes, extraStudents) {const heap new PriorityQueue({compare: (a, b) {let val1 (b[1] 1) * b[1] * (a[1] - a[0]);let val2 (a[1] 1) * a[1] * (b[1] - b[0]);if (val1 val2) {return 0;}return val1 val2 ? 1 : -1}})classes.forEach(([pass, total]) {heap.enqueue([pass, total])})while (extraStudents--) {const [pass, total] heap.dequeue()heap.enqueue([pass 1, total 1])}let ans 0while (heap.front()) {const [pass, total] heap.dequeue()ans Number(pass / total)}return ans / classes.length
};
使用指南可以看这个
datastructures-js/priority-queue作者hai-jia-er-shan-de-luo-ri
链接https://leetcode.cn/problems/maximum-average-pass-ratio/solution/javascriptyou-xian-dui-lie-ke-yi-shi-yon-1wkq/
来源力扣LeetCode
著作权归作者所有。商业转载请联系作者获得授权非商业转载请注明出处。