#OD052. 异常的打卡记录

异常的打卡记录

题目解析和算法源码

华为OD机试 - 异常的打卡记录(Java & JS & Python)_伏城之外的博客-CSDN博客

题目描述

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

如果出现以下两种情况,则认为打卡异常:

  1. 实际设备号与注册设备号不一样
  2. 或者,同一个员工的两个打卡记录的时间小于60分钟并且打卡距离超过5km。

给定打卡记录的字符串数组 clockRecords(每个打卡记录组成为:工号;时间(分钟);打卡距离(km);实际设备号;注册设备号),返回其中异常的打卡记录(按输入顺序输出)。

输入描述

第一行输入为N,表示打卡记录数;

之后的N行为打卡记录,每一行为一条打卡记录。

输出描述

输出异常的打卡记录。

备注

  • clockRecords长度 ≤ 1000
  • clockRecords[i] 格式:{id},{time},{distance},{actualDeviceNumber},{registeredDeviceNumber}
  • id由6位数字组成
  • time由整数组成,范围为0 ~ 1000
  • distance由整数组成,范围为0 ~100
  • actualDeviceNumber与registeredDeviceNumber由思维大写字母组成

用例1

输入

2
100000,10,1,ABCD,ABCD
100000,50,10,ABCD,ABCD

输出

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

说明

第一条记录是异常得,因为第二题记录与它得间隔不超过60分钟,但是打卡距离超过了5km,同理第二条记录也是异常得。

用例2

输入

2
100000,10,1,ABCD,ABCD
100001,80,10,ABCE,ABCE

输出

null

说明

无异常打卡记录,所以返回null

用例3

输入

2
100000,10,1,ABCD,ABCD
100000,80,10,ABCE,ABCD

输出

100000,80,10,ABCE,ABCD

说明

第二条记录得注册设备号与打卡设备号不一致,所以是异常记录