003 优秀学员统计

003 优秀学员统计

题目描述

公司某部门软件教导团正在组织新员工每日打卡学习活动,他们开展这项学习活动已经一个月了,所以想统计一下这个月优秀的打卡员工。每个员工对应一个id,每天的打卡记录当天打卡的员工的id集合,一共30天。

请你实现代码,帮助统计出打卡次数top5的员工,假如打卡次数相同,将较早参与打卡的员工排在前面,如果开始参与打卡的时间还是一样的,将id较小的员工排在前面。

:不考虑并列的情况,按规则返回前5名员工id即可,如果当月打卡的员工小于5个,按规则排序返回所有有打卡记录的员工id。

输入描述

第一行输入为新员工数量N,表示新员工编号为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

输出:

10 0 1 7 6

说明
员工编号范围为0~10,id为10的员工连续打卡30天,排在第一位,id为0、1、6、7的员工打卡都是2天,id为0、1、7的员工在第一天就打卡了,比id为6的员工早,排在前面,id为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

输出:

0 1 2 3 4

说明:
员工编号范围为0~6,id为0、1、2、3、4、5的员工打卡次数先沟通,最早打卡的时间也一样,所以按id升序返回前5个id,所以输出为[0,1,2,3,4]

示例三

输入:

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 0

说明:
只有两名员工参与打卡,按规则排序输出两名员工的id。

解题思路

本题突破点在于构造一个员工打卡记录的字典,可设置key表示员工编号,value是一个元组,元组第一个数表示打卡次数,元组第二个数表示第一次打卡的时间
遍历30天每天打卡的员工id集合card_records,按照上述字典,记录员工打卡次数和第一次打卡的时间
对字典进行value值的排序,首先按照打卡次数排序,然后再按照第一次打卡的时间排序,最后默认按照员工id排序
取出前5个员工编号

解题代码

def solve_method(N, card_total, card_records):""":param N: 新员工数量:param card_total: 每天打卡的员工数量:param card_records: 30天每天打卡的员工id集合:return:"""# key表示员工编号# value是一个元组,元组第一个数表示打卡次数,元组第二个数表示第一次打卡的时间card_dict = {}for day, item in enumerate(card_records):for p_id in item:if p_id in card_dict.keys():value = card_dict.get(p_id)count = value[0]card_dict[p_id] = (count + 1, value[1])else:card_dict[p_id] = (1, day + 1)# 首先按照打卡次数排序,然后再按照第一次打卡的时间排序,最后默认按照id排序sorted_card_dict = sorted(card_dict.items(), key=lambda x: (-x[1][0], x[1][1]))return [n[0] for n in sorted_card_dict[:5]]if __name__ == '__main__':N = 11card_total = [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]card_records = [[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]]assert solve_method(N, card_total, card_records) == [10, 0, 1, 7, 6]N = 7card_total = [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]card_records = [[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]]assert solve_method(N, card_total, card_records) == [0, 1, 2, 3, 4]N = 2card_total = [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]card_records = [[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]]assert solve_method(N, card_total, card_records) == [1, 0]

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/56824.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Windows】电脑端口明明没有进程占用但显示端口被占用(动态端口)

TOC 一、问题 重启电脑后,启用某个服务显示1089端口被占用。 查看是哪个进程占用了: netstat -aon | findstr "1089"没有输出,但是换其他端口,是可以看到相关进程的: 现在最简单的方式是给我的服务指定另…

解決爬蟲代理連接的方法

爬蟲在運行過程中常常會遇到代理連接的問題,這可能導致數據抓取的效率降低甚至失敗。 常見的代理連接問題 代理IP失效:這是最常見的問題之一。有些代理IP可能在使用一段時間後失效,導致連接失敗。 連接超時:由於網路不穩定或代…

阿里云项目启动OOM问题解决

问题描述 随着项目业务的增长,系统启动时内存紧张,每次第一次启动的时候就会出现oom第二次或者第n的时候,就启动成功了。 带着这个疑问,我就在阿里云上提交了工单,咨询为什么第一次提交失败但是后面却能提交成功尼&a…

HarmonyOS 组件样式@Style 、 @Extend、自定义扩展(AttributeModifier、AttributeUpdater)

1. HarmonyOS Style 、 Extend、自定义扩展(AttributeModifier、AttributeUpdater) Styles装饰器:定义组件重用样式   ;Extend装饰器:定义扩展组件样式   自定义扩展:AttributeModifier、AttributeUpdater 1.1. 区…

SpringBoot 下的Excel文件损坏与内容乱码问题

序言 随着打包部署的方式的改变,原本正常运行的代码可能带来一些新的问题,比如我们现在使用SpringBoot 的方式生成Jar包直接运行,就会对我们再在Resource下的Excel文件产生影响,导入与预期不符的情况发生cuiyaonan2000163.com 比…

Educational Codeforces Round 170 C New Game

思路 滑动窗口 排完序后找左右边界差值小于等于k 的最长子序列长度即可 可以用map去重 代码 #include <bits/stdc.h> using namespace std;const int N 200010;int t, n, k; int a[N], b[N];void solve() {cin >> n >> k;for (int i 1; i < n; i …

计算机网络的主要知识点小结

计算机网络是指将多台计算机通过通信线路连接起来&#xff0c;实现资源共享和信息传递的系统。 一、计算机网络概述 1. 定义和功能 - 定义&#xff1a;计算机网络是将地理位置不同的具有独立功能的多台计算机及其外部设备&#xff0c;通过通信线路连接起来&#xff0c;在网络操…

Anchor DETR论文笔记

原文链接 [2109.07107] Anchor DETR: Query Design for Transformer-Based Object Detection (arxiv.org)https://arxiv.org/abs/2109.07107 原文笔记 What 提出了一种新的基于锚点的查询设计&#xff0c;即将锚点编码为对象查询。 Why 对象检测任务是预测图像中每个对象…

Python基础知识-异常处理篇

在Python中&#xff0c;异常处理是应对程序运行时错误的一种机制。它能帮助我们捕获和处理错误&#xff0c;防止程序崩溃。下面是异常处理的关键知识和实践示例&#xff1a; 1. 异常处理基础 Python中的异常处理使用 try, except, else, 和 finally 块来实现。 基本语法结构…

SQLite Having 子句

SQLite Having 子句 在SQLite数据库中&#xff0c;HAVING子句用于与GROUP BY子句配合使用&#xff0c;以便对分组后的结果进行条件过滤。当您需要对分组的数据应用条件时&#xff0c;HAVING子句变得非常有用。这与WHERE子句不同&#xff0c;后者用于在数据分组之前过滤行。 基…

el-table相关的功能实现

1. 表格嵌套表格时&#xff0c;隐藏父表格的全选框 场景&#xff1a;当table表格设置复选&#xff08;多选&#xff09;功能时&#xff0c;如何隐藏表头的复选框&#xff0c;不让用户一键多选。 <el-table :header-cell-class-name"cellClass">// 表头复选框禁…

通过HBase实现大规模日志数据存储与分析

通过HBase实现大规模日志数据存储与分析 I. 项目背景 随着互联网技术的迅速发展&#xff0c;各类应用和系统每天都会生成大量的日志数据。这些日志包括应用日志、服务器日志、数据库日志、安全日志等&#xff0c;它们不仅记录了系统的运行状况&#xff0c;还包含了许多关键的…

[NeetCode 150] Minimum Window With Characters

Minimum Window With Characters Given two strings s and t, return the shortest substring of s such that every character in t, including duplicates, is present in the substring. If such a substring does not exist, return an empty string “”. You may assum…

Apache HttpClient 和 OkHttpClient 的使用

概述 Apache HttpClient Apache HttpClient是一个开源的HTTP客户端库&#xff0c;提供了丰富的HTTP通信功能。它支持HTTP/1.1和HTTPS协议&#xff0c;具有连接池管理、重试机制、代理设置等高级特性。HttpClient的API设计虽然相对繁琐&#xff0c;但提供了高度的可配置性和灵…

Flutter主题最佳实践

Styling your Flutter app not only makes it visually appealing but also enhances the user experience. Flutter offers a robust theming system that helps you maintain consistency and customize your app’s look and feel. 设计 Flutter 应用程序的风格不仅能使其在…

E - Permute K times 2

E - Permute K times 2 思路 这题由于序列P是一个排列&#xff0c;所以将P表示成一个图的时候&#xff0c;这个图将由 m m m个环构成 对于每个环上的点来说&#xff0c;第一回合它会移动到距离它为 2 2 2的点上&#xff0c;距离它为 2 2 2的点同时也以相同的方式移动&#x…

机器视觉-相机、镜头、光源(总结)

目录 1、机器视觉光源概述 2、光源的作用 3、光谱 4、工业场景常见光源 4.1、白炽灯 4.2、卤素灯 4.3、 荧光灯 4.4、LED灯 4.5、激光灯 5、光源的基本性能 5.1、光通量 5.2、光效率 5.3、发光强度 5.4、光照度 5.5、均匀性 5.6、色温 5.7、显色性 6、基本光学…

【Linux | 网络I/O模型】五种网络I/O模型详解

1、数据传输过程 在 Linux 系统中&#xff0c;数据传输是通过 I/O 操作来实现的。I/O 操作是指数据从应用程序到内核&#xff0c;再到硬件设备&#xff08;如磁盘、网络接口&#xff09;的过程。 操作系统为了保护自己&#xff0c;设计了用户态、内核态两个状态。应用程序一般工…

基于云平台的智能家居管理系统设计与通信协议分析

案例 阅读以下关于 Web 系统架构设计的教述&#xff0c;在答题纸上回答问题1至问题3。 【说明】 某公司拟开发一个智能家居管理系统&#xff0c;该系统的主要功能需求如下: 1)用户可使用该系统客户端实现对家居设备的控制&#xff0c;且家居设备可向客户端反馈实时状态&#x…

js将图片复制到粘贴板上

这个方法目前受限与js的API的限制&#xff0c;只能针对jpg/jpeg/png进行粘贴&#xff0c;gif目前没有比较好的方法可以去粘贴&#xff0c;现将代码粘贴如下&#xff1a; // 通过 Canvas&#xff0c;我们可以将图像绘制到画布上&#xff0c;然后将其转换为支持的格式&#xff0…