排序:
对得分数组 a 进行升序排序,以便于后续处理。
遍历可能的分数线:
从数组的第一个元素到倒数第二个元素(即 a[0] 到 a[len-2]),逐个作为分数线 x 进行检查。
选择 a[len-2] 而不是 a[len-1] 是因为最后一个元素不可能作为分数线,因为它没有更大的分数来形成晋级的项目组。
计算晋级和淘汰数量:
对于每个分数线 x,计算大于 x 的项目组数量(晋级数量)和小于等于 x 的项目组数量(淘汰数量)。
晋级数量可以通过数组长度减去当前索引加一得到。
淘汰数量可以通过当前索引加一得到。
检查条件:
检查晋级和淘汰的数量是否都在 [m, n] 之间。
如果是,则记录当前分数线 x 并返回。
返回结果:
如果遍历完所有可能的分数线后都没有找到满足条件的分数线,则返回 -1。