2023 华为od笔试题 0427

笔试时间:2023年4月27日 春招暑期实习

第一题

题目:考勤记录

考勤记录是分析和考核职工工作时间利用情况的原始依据,也是计算职工工资的原始依据,为了正确地计算职工工资和监督工资基金使用情况,公司决定对员工的手机打卡记录进行异常排查。如果出现以下两种情况,则认为打卡异常

1、实际设备号与注册设备号不一样

2、或者,同一个员工的两个打卡记录的时间小于60分钟并且打卡距离超过5km。给定打卡记录的字符串数组clockRecords (每个打卡记录组成为:工号;时间 (分钟) ;打卡距离(km) ;实际设备号;注册设备号) ,返回其中异常的打卡记录 (按输入顺序输出)。

输入描述

第一行输入为N,表示打卡记录数; 之后的N行为打卡记录,每一行为一条打卡记录.例如: 2 100000,10,1,ABCD,ABCD;100000,50,10,ABCD,ABCD

输出描述

输出为异常的打卡记录,例如:

100000,10,1ABCD,ABCD;100000,50,10ABCD,ABCD

示例输入

示例1:

2

100000,10,1,ABCD,ABCD;100000,50,10ABCD,ABCD

示例2:

2

100000,10.1.ABCDABCD;100000,80,10,ABCE,ABCD

示例输出

示例1:

100000,10,1,ABCD,ABCD;100000,50,10,ABCD,ABCD

示例2:

100000,80,10,ABCE,ABCD

说明 第二条记录的注册设备号与打卡设备号不-致,所以是异常记录

输出 null 说明 无异常打卡记录,所以返回null

备注

1、clockRecords长度<=1000; 2、clockRecordsi格式: {id},{time},{distance},{actualDeviceNumber},{registeredDeviceNumber} 3、id由6位数字组成;

4、time由整数组成,范围为0~1000;

5、distance由整数组成,范围为0~100;

6、actualDeviceNumber与registeredDeviceNumber由 四位大写字母组成。

参考题解

模拟题。

Python:

N = int(input())
records = {}
for i in range(N):
    lines = input().split(",")
    id, time, dis, devid, reg_id = int(lines[0]), int(lines[1]), int(lines[2]), lines[3], lines[4]
    if id not in records: records[id] = []
    records[id].append([time, dis, devid, reg_id, i])

eroors = []
for id in records:
    records[id].sort(key=lambda x : x[0])
    for i in range(len(records[id])):
        if records[id][i][2] != records[id][i][3]:
            eroors.append([id] + records[id][i])
        else:
            if i < len(records[id]) - 1:
                if abs(records[id][i][0] - records[id][i+1][0]) < 60 and abs(records[id][i][1] - records[id][i+1][1]) > 5:
                    eroors.append([id] + records[id][i])
                    eroors.append

剩余60%内容,订阅专栏后可继续查看/也可单篇购买

2023 秋招笔试题汇总解析 文章被收录于专栏

2023秋招各大笔试题汇总,c++,java,python多种语言分析,解答。

全部评论

相关推荐

05-16 09:20
已编辑
中国民航大学 Java
点赞 评论 收藏
分享
03-29 12:10
门头沟学院 C++
挣K存W养DOG:散漫消极者淘汰,一眼坑爹。实习几个月转正的时候说你加班太少,能力还行态度不够积极裁了,马上老实。
点赞 评论 收藏
分享
评论
点赞
1
分享

创作者周榜

更多
牛客网
牛客企业服务