蓝图杯月赛:谁是最后进入考场的?

马上要进行 '蓝图杯' 月赛了, 刘老师想看看谁是最后一个进入考场的。

一共有 n 名考生, i 号考生进入考场后, 刘老师会记录一下当前考场内的人数 ai, 你能否给出进入考场的顺序?

数据格式

输入格式

第一行输入一个整数 n 表示一共有多少人

第二行输入 n 个整数, 表示 ai.

输出格式

输出一行 n 个整数, 第 i 个数字表示第 i 个入场的学生序号

解题思路

题目给出了考场内人数的记录,要求按照进入考场的顺序输出考生的序号。

具体的解题思路如下:

  1. 首先,我们可以将每个考生的序号与对应的进入考场人数记录在一起,即构成一个元组列表。
  2. 然后,对元组列表进行排序,排序的规则是按照进入考场人数递增的顺序进行排序。
  3. 最后,按照排序后的顺序输出考生的序号即可。

代码实现

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 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录