问题描述
公司正在进行优秀项目组评比的初选工作,参赛者有小C、小U、小R、小S、小M和小F的项目组。评委会已经根据他们提交的材料完成了打分,各个项目组的得分分别是s1,s2,s3,…,sks1,s2,s3,…,sk。评委们希望设定一个初选晋级的分数线xx,让所有得分大于xx的项目组晋级,其他的项目组将被淘汰。此外,评委们希望晋级的项目组数量和淘汰的项目组数量都在区间[m,n][m,n]之间。
显然,这个分数线xx可能不存在,也可能存在多个满足条件的分数线。如果不存在满足条件的xx,则输出−1−1;如果存在多个满足条件的分数线xx,则输出满足条件的最小分数线。
代码
def solution(m: int, n: int, a: list) -> int:
# PLEASE DO NOT MODIFY THE FUNCTION SIGNATURE
# write code here
a.sort()
k = len(a)
for i in range(1, k):
if a[i] != a[i - 1]:
if m <= i <= n and m <= k - i <= n:
return a[i - 1]
return -1
if __name__ == '__main__':
print(solution(2, 3, [1, 2, 3, 5, 6, 4]) == 3)
print(solution(1, 2, [7, 8, 9, 3, 5]) == -1)
print(solution(1, 4, [7, 8, 9, 3, 5]) == 3)