第六届字节跳动青训营第十一课 | 豆包MarsCode AI 刷题

110 阅读3分钟

公司正在进行优秀项目组评比的初选工作,参赛者有小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')