蓝图杯月赛:谁是最后进入考场的?
蓝图杯月赛:谁是最后进入考场的?
马上要进行 '蓝图杯' 月赛了, 刘老师想看看谁是最后一个进入考场的。
一共有 n 名考生, i 号考生进入考场后, 刘老师会记录一下当前考场内的人数 ai, 你能否给出进入考场的顺序?
数据格式
输入格式
第一行输入一个整数 n 表示一共有多少人
第二行输入 n 个整数, 表示 ai.
输出格式
输出一行 n 个整数, 第 i 个数字表示第 i 个入场的学生序号
解题思路
题目给出了考场内人数的记录,要求按照进入考场的顺序输出考生的序号。
具体的解题思路如下:
- 首先,我们可以将每个考生的序号与对应的进入考场人数记录在一起,即构成一个元组列表。
- 然后,对元组列表进行排序,排序的规则是按照进入考场人数递增的顺序进行排序。
- 最后,按照排序后的顺序输出考生的序号即可。
代码实现
n = int(input()) # 输入考生的数量
nums = list(map(int, input().split())) # 输入每个考生的进入考场人数记录
# 构建元组列表
students = [(i+1, nums[i]) for i in range(n)]
# 按照进入考场人数递增的顺序进行排序
students.sort(key=lambda x: x[1])
# 输出考生的序号
for student in students:
print(student[0], end=' ')
时间复杂度分析
- 构建元组列表的时间复杂度为O(n);
- 对元组列表进行排序的时间复杂度为O(nlogn);
- 输出考生的序号的时间复杂度为O(n)。 所以,总的时间复杂度为O(nlogn)。
原文地址: https://www.cveoy.top/t/topic/qCjL 著作权归作者所有。请勿转载和采集!