公司正在进行优秀项目组评比的初选工作,参赛者有小C、小U、小R、小S、小M和小F的项目组。评委会已经根据他们提交的材料完成了打分,各个项目组的得分分别是 ( s_1, s_2, s_3, \ldots, s_k )。评委们希望设定一个初选晋级的分数线 ( x ),让所有得分大于 ( x ) 的项目组晋级,其他的项目组将被淘汰。此外,评委们希望晋级的项目组数量和淘汰的项目组数量都在区间 ([m, n]) 之间。
显然,这个分数线 ( x ) 可能不存在,也可能存在多个满足条件的分数线。如果不存在满足条件的 ( x ),则输出 (-1);如果存在多个满足条件的分数线 ( x ),则输出满足条件的最小分数线。
测试样例
示例 1:
输入:**m = 2, n = 3, a = [1, 2, 3, 5, 6, 4]**
输出:**3**
示例 2:
输入:**m = 1, n = 2, a = [7, 8, 9, 3, 5]**
输出:**-1**
示例 3:
输入:**m = 1, n = 4, a = [7, 8, 9, 3, 5]**
输出:**3**
def solution(m: int, n: int, a: list) -> int:
# write code here
if len(a) > 2 * n:
return -1
a.sort()
# print(a)
# print(n+1)
# print(a[-(n+1)])
for i in range(len(a)-(n+1), n):
# print(i)
if i < m-1:
continue
if len(a) - i - 1 < m:
continue
if a[i] != a[i+1]:
# print(a[i])
return a[i]
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)
小C的外卖超时判断
小C点了一个外卖,并且急切地等待着骑手的送达。她想知道她的外卖是否超时了。
已知小C在时刻 **t1** 点了外卖,外卖平台上显示的预计送达时间为 **t2**,而实际送达时间为 **t3**。需要判断外卖是否超时。如果外卖超时,则输出 **"Yes"**;否则输出 **"No"**。
**t3** 在 **t2** 之后则认定为超时。
实际送达时间与预计送达时间在 **2** 小时之内。
测试样例
示例 1:
输入:**t1 = "18:00", t2 = "19:05", t3 = "19:05"**
输出:**"No"**
示例 2:
输入:**t1 = "23:00", t2 = "00:21", t3 = "00:23"**
输出:**"Yes"**
示例 3:
输入:**t1 = "23:05", t2 = "00:05", t3 = "23:58"**
输出:**"No"**
def solution(t1: str, t2: str, t3: str) -> str:
# write code here
temp = charge(t3, t2)
if temp == 0:
return "No"
elif temp == -1:
if charge(t3, t1) == -1:
return "Yes"
return "No"
else:
if charge(t2, t1) == -1:
if charge(t3, t1) == 1:
return "No"
return "Yes"
return "Yes"
def charge(t1: str, t2: str) -> int:
t1_1, t1_2 = t1.split(":")
t2_1, t2_2 = t2.split(":")
if t1_1 > t2_1:
return 1
elif t1_1 < t2_1:
return -1
else:
if t1_2 > t2_2:
return 1
elif t1_2 < t2_2:
return -1
else:
return 0
if __name__ == '__main__':
print(solution("18:00", "19:05", "19:05") == 'No')
print(solution("23:00", "00:21", "00:23") == 'Yes')
print(solution("23:05", "00:05", "23:58") == 'No')