**谁没交卷**

2026 华为OD机试真题 7月15日华为OD上机新系统考试真题 100 分题型

点击查看华为 OD 机试真题完整目录:2026最新华为OD机试新系统卷 + 双机位C卷 真题题库目录|全覆盖题库 + 逐点算法考点详解

题目描述

张老师组织了一场线上模拟考试,并要求考生使用学号登录网站进行考试。考试完成后张老师发现试卷提交不全,他需要找到哪些同学没有交卷。

若班级内有 N 个学生,则学号从 1 开始到 N 结束,每个学生一个学号。一个班级内学生个数不超过 80,即 0<N≤80。

请你编写一个程序,帮助张老师快速找到哪些学号的学生没有交卷。

2026 华为OD机试真题 7月15日华为OD上机新系统考试真题 100 分题型

点击查看华为 OD 机试真题完整目录:2026最新华为OD机试新系统卷 + 双机位C卷 真题题库目录|全覆盖题库 + 逐点算法考点详解

输入描述

  • 班级内学生数量。
  • 交卷学生的学号列表,由于是按照交卷时间排序的,学号是乱序的,同时本题确保学号是合法的,不存在小于 1 或大于 N 的学号。

输出描述

未交卷学生的学号列表,按照学号升序排列。

输出格式为列表形式:使用英文方括号,多个学号之间用英文逗号分隔,逗号后不加空格;如果所有学生都已交卷,输出 []

示例1

输入

10
1,5,3,2,6,7,8,9,10

输出

[4]

说明

班级内共有 10 人,学号 1-10,学号为 4 的学生没有交卷,因此返回 4

示例2

输入

10
9,2,3,5,6,7

输出

[1,4,8,10]

说明

班级内共有 10 人,学号 1-10,学号为 1,4,8,10 的学生没有交卷,因此返回 1,4,8,10

示例3

输入

10
9,1,2,4,5,3,7,8,6,10

输出

[]

说明

有 10 人,学号 1-10,所有学生均进行了交卷,因此返回 []

解题思路

核心思想

学生学号范围固定为 1N。将已经交卷的学号放入集合,然后从小到大枚举所有学号,凡是不在集合中的学号就是未交卷学生。

题目要求结果按学号升序排列,所以枚举顺序天然保证输出顺序,不需要再排序。

算法步骤

  1. 读取 N
  2. 读取交卷学生学号列表,按逗号或空白解析出数字。
  3. 将交卷学生学号加入集合。
  4. 1N 依次判断每个学号是否在集合中。
  5. 将未出现的学号加入答案列表。
  6. [a,b,c] 的格式输出;若答案为空,输出 []

复杂度分析

设学生数量为 N,交卷人数为 M

时间复杂度:O(N+M),构建集合需要 O(M),枚举所有学号需要 O(N)

空间复杂度:O(M),主要用于保存已交卷学

THE END