华为OD机试真题 Python 实现【优秀学员统计】【2023Q1 100分】,附详细解题思路

news2024/11/27 21:02:25

在这里插入图片描述

目录

    • 一、题目描述
    • 二、输入描述
    • 三、输出描述
    • 四、补充说明
    • 五、解题思路
    • 六、Python算法源码
    • 七、效果展示
      • 1、输入
      • 2、输出
      • 3、说明

一、题目描述

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

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

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

二、输入描述

第一行输入为新员工数量N,表示新员工编号id为0到N-1,N的范围为[1,100];
第二行输入为30个整数,表示每天打卡的员工数量,每天至少有1名员工打卡;
之后30行为每天打卡的员工id集合,id不会重复;

三、输出描述

按顺序输出打卡top5员工的id,用空格隔开。

四、补充说明

同一天打卡的员工没有时间上早晚的区别。不保证所有员工都会打卡。排名只针对有打卡记录的员工。

五、解题思路

为了解决这个问题,我们可以按照以下步骤进行操作:

  1. 读取新员工数量N。
  2. 读取30个整数,表示每天的打卡员工数量。
  3. 创建一个HashMap,用于存储员工的打卡信息。键为员工ID,值为一个长度为2的整数数组,数组的第一个元素表示员工第一次打卡的日期,第二个元素表示员工的打卡次数。
  4. 遍历每天的打卡信息:
    • 对于每天的打卡信息,读取员工的ID集合。
    • 遍历员工的ID集合,更新HashMap中对应员工的打卡信息。如果员工已存在于HashMap中,则更新其打卡次数;否则,在HashMap中添加员工的打卡信息,包括第一次打卡的日期和打卡次数。
  5. 将HashMap中的打卡信息转换为List,并根据打卡次数和第一次打卡日期进行排序。
  6. 按照题目要求,输出前5名员工的ID。

该算法的时间复杂度为O(N),其中N是新员工的数量。因为我们需要遍历30天的打卡信息,并更新HashMap中的员工打卡信息。排序的时间复杂度为O(NlogN),取决于HashMap转换为ListList的排序操作。最终的空间复杂度为O(N),取决于HashMap和List的存储空间。

六、Python算法源码

import sys
import collections

# handle inputs
n = int(sys.stdin.readline().strip())
calendar = sys.stdin.readline().strip("\n").split()
res_map = collections.OrderedDict()
day = 30
for i in range(day):
    current = sys.stdin.readline().strip("\n").split()
    for id in current:
        res_map.setdefault(id, 0)
        res_map[id] += 1
count_list = sorted(res_map.items(), key=lambda x: x[1], reverse=True)
length = 5
if n <= 5:
    length = n
for i in range(length):
    print(count_list[i][0], end=" ")

七、效果展示

1、输入

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

2、输出

10 0 1 7 6

3、说明

员工编号范围为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]。

在这里插入图片描述


🏆下一篇:华为OD机试真题 Python 实现【相对开音节】【2022Q4 100分】,附详细解题思路

🏆本文收录于,华为OD机试(Python)真题(A卷+B卷)

刷的越多,抽中的概率越大,每一题都有详细的答题思路、详细的代码注释、样例测试,订阅后,专栏内的文章都可看,发现新题目,随时更新,全天CSDN在线答疑。

在这里插入图片描述

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

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

相关文章

pdf转ppt怎么转换?分享这几个方法给大家!

将PDF文件转换为PPT演示文稿是一项常见需求&#xff0c;无论是为了编辑、演示还是共享文件。 随着信息技术的不断进步&#xff0c;我们经常遇到需要将PDF文件转换为PPT演示文稿的情况。以下是四种简便的方法&#xff0c;供大家参考。 方法一&#xff1a;使用记灵在线工具 通…

Salesforce Associate认证考试指南来啦!(内含备考攻略)

Salesforce Associate认证是一项全新的入门级认证&#xff0c;针对0-6个月Salesforce经验的学习者。这一新认证不再强调实践专业知识&#xff0c;而是验证并增强那些拥有Salesforce基础知识的备考者。这些知识包括了解CRM平台的用途、解决的业务需求&#xff0c;以及如何使用Sa…

若依管理系统包名修改工具下载,使用教程(本人实测有效)

下载地址&#xff1a; 若依官网指定下载-Gitee包名修改文件下载地址 使用方法&#xff1a; 1.选择文件的地方需要选择zip压缩文件&#xff0c;把从若依官网拉下来的代码压缩成zip文件即可

Django实现简单的音乐播放器 3

在原有音乐播放器上请求方式优化和增加加载本地音乐功能。 效果&#xff1a; 目录 播放列表优化 设置csrf_token 前端改为post请求 视图端增加post验证 加载歌曲 视图 设置路由 模板 加载layui css 加载layui js 增加功能列表 功能列表脚本实现 最终效果 总结 播…

分布式监控之Zabbix6.0监控系统一

分布式监控之Zabbix6.0监控系统 前言一、Zabbix1、介绍2、zabbix监控原理3、Zabbix6.0版本新特性4、Zabbix6.0功能组件5、Zabbix与Prometheus对比 二、Zabbix6.0部署1、部署zabbix服务端2、添加 zabbix 客户端主机3、自定义监控内容4、zabbix 自动发现5、zabbix 自动注册 前言 …

业务安全情报第十八期 | 知名手游开启公测,大批游戏账号遭抢注倒卖

目录 某知名手游遭账号抢注倒卖 倒卖游戏者的风险特征 游戏运营商快速识别倒卖账号的黑灰产 网络游戏已经成为许多人娱乐和放松的重要途径。随着游戏玩家追求迅速提升角色等级和属性的愿望日益增长&#xff0c;游戏账号倒卖、账号出租越来越多&#xff0c;并逐步衍生出一条灰…

智慧电子班牌是什么?电子班牌云平台源码的开发技术有哪些?

智慧电子班牌是什么&#xff1f; 电子班牌是一种智能交互终端&#xff0c;电子班牌可以解决“走班教学”考勤管理问题&#xff0c;将大数据、物联网和人工智能等新兴技术和教学管理工作融合&#xff0c;提升学校管理水平和管理效率。 电子班牌是安装在学校各教室门口的高清可视…

LeetCode·每日一题·2178. 拆分成最多数目的正偶数之和·贪心

作者&#xff1a;小迅 链接&#xff1a;https://leetcode.cn/problems/maximum-split-of-positive-even-integers/solutions/2332925/tan-xin-zhu-shi-chao-ji-xiang-xi-by-xun-zoioi/ 来源&#xff1a;力扣&#xff08;LeetCode&#xff09; 著作权归作者所有。商业转载请联系…

Vue2通过点击渲染循环的echarts

底下放置源码cv即可食用 几个注意事项&#xff1a; echartsData 这个变量是为了模拟后端数据格式changeTag() 这个方法是为了控制最多可以多选几条最后关于循环echarts的灵感来源于 明天也要努力 <!DOCTYPE html> <html lang"en"><head><meta…

上海亚商投顾:沪指缩量调整 PCB、CPO概念股全天领涨

上海亚商投顾前言&#xff1a;无惧大盘涨跌&#xff0c;解密龙虎榜资金&#xff0c;跟踪一线游资和机构资金动向&#xff0c;识别短期热点和强势个股。 市场情绪 沪指今日震荡调整&#xff0c;创业板指午后跌超1%。AI概念股反弹&#xff0c;存储芯片、CPO等方向领涨&#xff0c…

【MySQL】MySQL基本语句大全

个人主页&#xff1a;【&#x1f60a;个人主页】 系列专栏&#xff1a;【❤️MySQL】 文章目录 前言结构化查询语句分类MySQL语句大全&#x1f4da;DDL&#xff08;对数据库和表的操作&#xff09;&#x1f916;DQL&#xff08;查询语句&#xff09;&#x1f4bb;关键字&#x…

香橙派4和树莓派4B构建K8S集群实践之七: Jenkins

目录 1. 说明 2. 步骤 2.1 准备工作 2.2 安装 2.2.1 用jenkins原站for k8s的安装仓方法安装 2.2.2 Helm 安装 3. 相关命令 4. 遇到的问题 5. 参考 1. 说明 在k8s上部署jenkins&#xff0c;并用 jenkins.k8s-t2.com访问在namespace为devops下安装在指定节点k8s-master-…

CAN总线和DCB文件格式

目录 CAN总线和DBC格式1. CAN总线1.1 CAN总线的组织结构1.2 CAN的信号结构 2. DBC格式2.1 通用描述2.2 DBC文件的结构 3. DBC文件官方示例3. DBC文件官方示例 CAN总线和DBC格式 1. CAN总线 控制器局域网总线&#xff08;CAN&#xff0c;Controller Area Network&#xff09;一…

【避坑指南】Unity3D接入外网SDK笔记(GooglePlay/FaceBook/AppsFlyer)

这段时间折腾了一下获取归因数据相关的SDK&#xff0c;遇到非常多奇奇怪挂的报错&#xff0c;在此记录一下。 准备资源 Unity的Jar包解析器&#xff0c;下面提及的SDK都需要工具解析并下载依赖 https://github.com/googlesamples/unity-jar-resolverAndroidStudio&#xff0c…

微信小程序基础库的介绍与更改

一、什么是基础库&#xff1f; 1、基础库是小程序运行的必要环境&#xff0c;我们的开发主要就是面向基础库开发的。基础库封装了微信和手机的能力并提供给小程序使用&#xff0c;我们使用基础库提供的组件和API开发起来非常的方便。 2、基础库存在于我们的微信客户端中&…

骑行,怎么样才能安全的下坡?

大家好&#xff0c;今天我们来聊聊自行车运动中的一个重要话题&#xff1a;如何安全地骑行下坡&#xff1f; 首先&#xff0c;我们要明白&#xff0c;安全下坡的秘诀在于控制。一是速度的控制&#xff0c;二是自身姿势的控制。就像一只灵活的狐狸&#xff0c;既要控制好自己的速…

Excel表格套用格式后分类汇总用不了解决方法之一

表格套用格式选择表格后分类汇总显示灰色不可用&#xff0c;如下图&#xff1a; 解决方法之一&#xff1a;右键-表格-转为区域&#xff0c;确定

如何部署LVS负载均衡集群(NAT模式)

目录 一、集群 负载均衡集群&#xff08;Load Balance Cluster&#xff09; 高可用集群&#xff08;High Availability Cluster&#xff09; 高性能运算集群&#xff08;High Performance Computer Cluster&#xff09; 二、负载均衡工作模式 VIP地址特性&#xff08;虚拟…

剑指offer(C++)-JZ40:最小的K个数(算法-排序)

作者&#xff1a;翟天保Steven 版权声明&#xff1a;著作权归作者所有&#xff0c;商业转载请联系作者获得授权&#xff0c;非商业转载请注明出处 题目描述&#xff1a; 给定一个长度为 n 的可能有重复值的数组&#xff0c;找出其中不去重的最小的 k 个数。例如数组元素是4,5,…

1.1 熟悉x64dbg调试器

x64dbg 是一款开源、免费、功能强大的动态反汇编调试器&#xff0c;它能够在Windows平台上进行应用程序的反汇编、调试和分析工作。与传统的调试器如Ollydbg相比&#xff0c;x64dbg调试器的出现填补了Ollydbg等传统调试器的不足&#xff0c;为反汇编调试工作提供了更高效、更可…