优秀学员统计
————————————————
版权声明:本文为CSDN博主「梦想橡皮擦」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/hihell/article/details/128994976
题目
公司某部门软件教导团正在组织新员工每日打卡学习活动,他们开展这项学习活动已经一个月了,所以想统计下这个月优秀的打卡员工。每个员工会对应一个 id,每天的打卡记录记录当天打卡员工的 id 集合,一共 30 天。
请你实现代码帮助统计出打卡次数 top5 的员工。假如打卡次数相同,将较早参与打卡的员工排在前面,如果开始参与打卡的时间还是一样,将 id 较小的员工排在前面。
注:不考虑并列的情况,按规则返回前 5 名员工的 id 即可,如果当月打卡的员工少于 5 个,按规则排序返回所有有打卡记录的员工 id。
输入
第一行输入为新员工数量 N,表示新员工编号 id 为 0 到 N-1,N 的范围为 [1,100]
第二行输入为 30 个整数,表示每天打卡的员工数量,每天至少有 1 名员工打卡
之后 30 行为每天打卡的员工 id 集合,id 不会重复
输出
按顺序输出打卡 top5 员工的 id,用空格隔开
备注
同一天打卡的员工没有时间上早晚的区别。不保证所有员工都会打卡。排名只针对有打卡记录的员工。
示例一
输入
11
4 4 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 2
0 1 7 10
0 1 6 10
10
10
10
10
10
10
10
10
10
10
10
10
10
10
10
10
10
10
10
10
10
10
10
10
10
10
6 10
7 10
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
输出
10 0 1 7 6
1
说明
员工编号范围为 0-10,id 为 10 的员工连续打卡 30 天,排第一,id 为 0,1,6,7 的员工打卡都是两天,id 为 0,1,7 的员工在第一天就打卡,比 id 为 6 的员工早,排在前面,0,1,7 按 id 升序排序,所以输出[10,0,1,7,6]
示例二
输入
7
6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6
0 1 2 3 4 5
0 1 2 3 4 5
0 1 2 3 4 5
0 1 2 3 4 5
0 1 2 3 4 5
0 1 2 3 4 5
0 1 2 3 4 5
0 1 2 3 4 5
0 1 2 3 4 5
0 1 2 3 4 5
0 1 2 3 4 5
0 1 2 3 4 5
0 1 2 3 4 5
0 1 2 3 4 5
0 1 2 3 4 5
0 1 2 3 4 5
0 1 2 3 4 5
0 1 2 3 4 5
0 1 2 3 4 5
0 1 2 3 4 5
0 1 2 3 4 5
0 1 2 3 4 5
0 1 2 3 4 5
0 1 2 3 4 5
0 1 2 3 4 5
0 1 2 3 4 5
0 1 2 3 4 5
0 1 2 3 4 5
0 1 2 3 4 5
0 1 2 3 4 5
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
输出
0 1 2 3 4
1
说明
员工编号范围为 0-6,id 为 0,1,2,3,4,5 的员工打卡次数相同,最早开始打卡的时间也一样,所以按 id 升序返回前 5 个 id
示例三
输入
2
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 2
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
0 1
0 1
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
输出
1 0
1
说明
只有两名员工参与打卡,按规则排序输出两名员工的 id
————————————————
版权声明:本文为CSDN博主「梦想橡皮擦」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/hihell/article/details/128994976
题目
公司某部门软件教导团正在组织新员工每日打卡学习活动,他们开展这项学习活动已经一个月了,所以想统计下这个月优秀的打卡员工。每个员工会对应一个 id,每天的打卡记录记录当天打卡员工的 id 集合,一共 30 天。
请你实现代码帮助统计出打卡次数 top5 的员工。假如打卡次数相同,将较早参与打卡的员工排在前面,如果开始参与打卡的时间还是一样,将 id 较小的员工排在前面。
注:不考虑并列的情况,按规则返回前 5 名员工的 id 即可,如果当月打卡的员工少于 5 个,按规则排序返回所有有打卡记录的员工 id。
输入
第一行输入为新员工数量 N,表示新员工编号 id 为 0 到 N-1,N 的范围为 [1,100]
第二行输入为 30 个整数,表示每天打卡的员工数量,每天至少有 1 名员工打卡
之后 30 行为每天打卡的员工 id 集合,id 不会重复
输出
按顺序输出打卡 top5 员工的 id,用空格隔开
备注
同一天打卡的员工没有时间上早晚的区别。不保证所有员工都会打卡。排名只针对有打卡记录的员工。
示例一
输入
11
4 4 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 2
0 1 7 10
0 1 6 10
10
10
10
10
10
10
10
10
10
10
10
10
10
10
10
10
10
10
10
10
10
10
10
10
10
10
6 10
7 10
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
输出
10 0 1 7 6
1
说明
员工编号范围为 0-10,id 为 10 的员工连续打卡 30 天,排第一,id 为 0,1,6,7 的员工打卡都是两天,id 为 0,1,7 的员工在第一天就打卡,比 id 为 6 的员工早,排在前面,0,1,7 按 id 升序排序,所以输出[10,0,1,7,6]
示例二
输入
7
6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6
0 1 2 3 4 5
0 1 2 3 4 5
0 1 2 3 4 5
0 1 2 3 4 5
0 1 2 3 4 5
0 1 2 3 4 5
0 1 2 3 4 5
0 1 2 3 4 5
0 1 2 3 4 5
0 1 2 3 4 5
0 1 2 3 4 5
0 1 2 3 4 5
0 1 2 3 4 5
0 1 2 3 4 5
0 1 2 3 4 5
0 1 2 3 4 5
0 1 2 3 4 5
0 1 2 3 4 5
0 1 2 3 4 5
0 1 2 3 4 5
0 1 2 3 4 5
0 1 2 3 4 5
0 1 2 3 4 5
0 1 2 3 4 5
0 1 2 3 4 5
0 1 2 3 4 5
0 1 2 3 4 5
0 1 2 3 4 5
0 1 2 3 4 5
0 1 2 3 4 5
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
输出
0 1 2 3 4
1
说明
员工编号范围为 0-6,id 为 0,1,2,3,4,5 的员工打卡次数相同,最早开始打卡的时间也一样,所以按 id 升序返回前 5 个 id
示例三
输入
2
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 2
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
0 1
0 1
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
输出
1 0
1
说明
只有两名员工参与打卡,按规则排序输出两名员工的 id