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秋招各大笔试题汇总,c++,java,python多种语言分析,解答。