C# LeetCode 1792:最大平均通过率 - (中等... 笔记

C# LeetCode 1792:最大平均通过率 - (中等)

LeetCode 问题要求通过增加额外的学生来最大化多个班级的平均通过率。使用优先队列来有效地跟踪具有最高潜在收益的班级。每个班级的初始通过人数和总学生人数被添加到优先队列中。该算法通过将额外的学生分配给能带来最大通过率改进的班级来迭代进行。增加一名学生带来的收益是根据增加前后比例的差异来计算的。代码实际上并没有在开始时增加学生,它只是计算了假设的收益。此计算会优先处理班级,以优化整体比例改进。在分配完所有额外的学生后,通过将所有班级的比例相加来计算最终的平均通过率。代码使用辅助函数来计算比例和收益。优先队列使用自定义比较器,确保始终选择收益最高的班级。最终平均值是通过将比例的总和除以班级数量来确定的。