题目

解题

def takeAttendance(records):
    """
    找出缺席学生的学号。

    参数:
    records (list of int): 点名记录的升序数组

    返回:
    int: 缺席学生的学号
    """
    left, right = 0, len(records) - 1

    while left <= right:
        mid = left + (right - left) // 2

        # 如果 records[mid] == mid,说明缺失学号在右半部分
        if records[mid] == mid:
            left = mid + 1
        else:
            right = mid - 1

    # 最后 left 的位置就是缺席的学号
    return left


records = [0, 1, 2, 3, 5]  # 学号 4 缺席

missing_student = takeAttendance(records)
print(missing_student)  # 4
08-31 19:17