华为OD机试真题【异常的打卡记录】

1、题目描述

【异常的打卡记录】
考勤记录是分析和考核职工工作时间利用情况的原始依据,也是计算职工工资的原始依据,为了正确地计算职工工资和监督工资基金使用情况,
公司决定对员工的手机打卡记录进行异常排查。
如果出现以下两种情况,则认为打卡异常:
1、实际设备号与注册设备号不一样
2、或者,同一个员工的两个打卡记录的时间小于60分钟并且打卡距离超过5km。
给定打卡记录的字符串数组clockRecords(每个打卡记录组成为:工号;时间(分钟);打卡距离(km);实际设备号;注册设备号),
返回其中异常的打卡记录(按输入顺序输出)
【示例一】
输入
2
100000,10,1,ABCD,ABCD100000,50,10,ABCD,ABCD
输出
100000,10,1,ABCD,ABCD;100000,50,10,ABCD,ABCD

2、解题思路

将打卡记录转换为Record对象,并判断实际设备号与注册设备号是否相同。如果不相同,将记录标记为异常。
比较打卡记录之间的时间和距离:遍历所有打卡记录,如果同一个员工有2条打卡记录,比较它们之间的时间差和距离差。如果时间差小于60分钟,且距离差大于5公里,将这两条记录标记为异常。

3、参考代码

import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;/*** @Author Long* @Date 2023/5/3 15:01*/
public class 异常的打卡记录 {public static void main(String[] args) {Scanner in = new Scanner(System.in);while (in.hasNext()) {int n = Integer.parseInt(in.nextLine());List<Record> records = new ArrayList<>();for (int i = 0; i < n; i++) {String[] str = in.nextLine().split(",");Record record = new Record(Integer.parseInt(str[0]), Integer.parseInt(str[1]),Integer.parseInt(str[2]), str[3], str[4]);record.isAbnormal = !record.actDeviceId.equals(record.regDeviceId);records.add(record);}for (int i = 0; i < records.size(); i++) {for (int j = i + 1; j < records.size(); j++) {if (records.get(i).employeeId == records.get(j).employeeId) {int timeDiff = Math.abs(records.get(i).time - records.get(j).time);int disDiff = Math.abs(records.get(i).distance - records.get(j).distance);if (timeDiff < 60 && disDiff > 5) {records.get(i).isAbnormal = true;records.get(j).isAbnormal = true;}}}}StringBuilder sb = new StringBuilder();for (Record record : records) {if (record.isAbnormal) {sb.append(record.toString()).append(";");}}if (sb.length() == 0) {System.out.println("null");} else {sb.deleteCharAt(sb.length() - 1);System.out.println(sb);}}}
}class Record {int employeeId;int time;int distance;String actDeviceId;String regDeviceId;boolean isAbnormal;public Record(int employeeId, int time, int distance, String actDeviceId, String regDeviceId) {this.employeeId = employeeId;this.time = time;this.distance = distance;this.actDeviceId = actDeviceId;this.regDeviceId = regDeviceId;this.isAbnormal = false;}public String toString() {return employeeId + "," + time + "," + distance + "," + actDeviceId + "," + regDeviceId;}
}

4、相似题目

(1)检测热点字符

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

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

相关文章

Tektronix泰克示波器

一、what’s the oscilloscope&#xff1f; 【ref】https://www.tek.com.cn/blog/what-is-an-oscilloscope 二、基础知识 1、带宽&#xff1a;100Mhz&#xff1b;采样率&#xff1a;2.5GS/s 1GS/s指的是采样率&#xff0c;前面大写的S是sample采样的意思 后面的s是秒 也就是示波…

软考2016年上半年第六题(适配器模式)与手术训练系统项目适配器模式的应用

软考2016年上半年第六题 public class Address {public void street(){System.out.println("a");};public void zip(){};public void city(){}; }package org.example.适配器模式;/*** 适配器模式&#xff08;Adapter Pattern&#xff09;是作为两个不兼容的接口之间…

Python自动化办公入门教程

个人网站 文章首发于公众号&#xff1a;小肖学数据分析 1. 简介 在职场中&#xff0c;自动化已经成为提升工作效率的关键手段。作为一种强大且易于学习的编程语言&#xff0c;Python为执行各种自动化任务提供了众多便利。 无论是数据分析、报告生成、邮件处理还是网络数据采…

ocr识别过程中的python知识点总结

一、Python [::-1]的简单理解与用法 从结果上来看&#xff0c;[::-1]的作用是对列表进行翻转&#xff0c;比方说&#xff1a; a [1, 2, 3, 4, 5] print(a[::-1]) b "12345" print(b[::-1]) 输出&#xff1a; [5, 4, 3, 2, 1] 54321 可以发现这个东西的用法和re…

Beta冲刺随笔-DAY4-橘色肥猫

这个作业属于哪个课程软件工程A这个作业要求在哪里团队作业–站立式会议Beta冲刺作业目标记录Beta冲刺Day4团队名称橘色肥猫团队置顶集合随笔链接Beta冲刺笔记-置顶-橘色肥猫-CSDN博客 文章目录 SCRUM部分站立式会议照片成员描述 PM报告项目程序&#xff0f;模块的最新运行图片…

设计模式-结构型模式之装饰者设计模式

文章目录 六、装饰者模式 六、装饰者模式 装饰者模式&#xff08;Decorator Pattern&#xff09;允许向一个现有的对象添加新的功能&#xff0c;同时又不改变其结构。它是作为现有的类的一个包装。 装饰类和被装饰类可以独立发展&#xff0c;不会相互耦合&#xff0c;装饰者模…

力扣题:字符串的反转-11.22

力扣题-11.22 [力扣刷题攻略] Re&#xff1a;从零开始的力扣刷题生活 力扣题1&#xff1a;541. 反转字符串 II 解题思想&#xff1a;进行遍历翻转即可 class Solution(object):def reverseStr(self, s, k):""":type s: str:type k: int:rtype: str"&quo…

DAPP开发【05】ERC20/ERC721简介

ERC20是以太坊上最受欢迎和广泛使用的代币标准之一。ERC20代币符合一组通用规则&#xff0c;包括代币的转账方法和余额查询方法。这些规则使得 ERC20 代币易于与钱包、交易所和其他合约进行集成和交互。 ERC20标准规定了代币合约必须实现以下6个函数&#xff1a; balanceOf(ad…

【Python】tensorflow学习的个人纪录(2)

actor.learn(s, a, td_error)def learn(self, s, a, td):s s[np.newaxis, :]feed_dict {self.s: s, self.a: a, self.td_error: td}_, exp_v self.sess.run([self.train_op, self.exp_v], feed_dict)return exp_v输入变量的数值&#xff1a; 步进&#xff1a; []---->[…

JavaWeb(二)

一、SQL简介 结构化查询语言&#xff0c;一门操作关系型数据库的编程语言。英文&#xff1a;Structured Query Language&#xff0c;简称 SQL。 二、Mysql和Oracle关于区分大小写 MySQL在Windows下都不区分大小写。 oracle中分为两种情况&#xff0c;单纯的sql语句不区分大小…

漏洞扫描服务是什么

漏洞扫描服务是维护网络安全的重要一环。通过定期或实时的漏洞扫描&#xff0c;组织可以及时发现并修复可能存在的安全威胁&#xff0c;增强自身网络的安全性。在选择漏洞扫描服务时&#xff0c;需要明确自身的需求和目标&#xff0c;并选择合适的工具和服务提供商。只有这样&a…

在一个没有超级用户的mongodb 生产库上如何添加超级用户

说来这个问题&#xff0c;都觉得不可思议&#xff0c;一个数据库怎么没有超级用户呢&#xff0c;我们知道&#xff0c;MYSQL&#xff0c;PG&#xff0c;ORACLE等&#xff0c;创建好后&#xff0c;都有一个默认的超级用户&#xff0c;MONGODB也有超级用户&#xff0c;但需要自己…

前端分片上传

前端分片上传是一种将大文件分成若干个小块进行上传的方式&#xff0c;以解决大文件上传时网络不稳定或上传速度慢的问题。下面是前端分片上传的基本步骤&#xff1a; 使用JavaScript读取文件&#xff0c;将文件分成若干块。可以使用File API来实现这个功能。使用XMLHttpReque…

使用VC++实现锐化处理(使用Sobel算子、Prewitt算子、Isotropic算子)

使用VC实现锐化处理&#xff08;使用Sobel算子、Prewitt算子、Isotropic算子&#xff09; 获取源工程可访问gitee可在此工程的基础上进行学习。 该工程的其他文章&#xff1a; 01- 一元熵值、二维熵值 02- 图像平移变换&#xff0c;图像缩放、图像裁剪、图像对角线镜像以及图像…

Vxworks6.9的在线gdb调试(仿真内核和板载内核)

创作目的&#xff1a;归纳总结常用的技巧和方法&#xff0c;方便自己后续查阅重点节省时间。 一、仿真内核的gdb调试 1、新建DKM工程&#xff0c;选择sim的BSP包 2、DKM工程中添加c文件并编辑入口函数 3、新建vxworks远端系统 4、显示系统起来之后进行加载.out 5、选择Debug模…

基于hadoop下的Kafka分布式安装

简介 Kafka是一种分布式流处理平台&#xff0c;它具有高吞吐量、可扩展性、可靠性、实时性和灵活性等优点。它能够支持每秒数百万条消息的传输&#xff0c;并且可以通过增加节点来增加吞吐量和存储容量。Kafka通过将数据复制到多个节点来实现数据冗余和高可用性&#xff0c;即使…

Linux脚本awk命令

目录 一. awk命令简介 1. awk版本 2. awk与vim的区别 3. awk与sed的区别 4. awk工作原理 5. awk格式 6. awk常用选项 二. awk基础用法 1. awk基础用法 2. BEGIN和END语句块 3. 指定分隔符 4. 首尾关键字 三. awk内置变量 1. FS变量 2. OFS变量 3. RS变量 4. NF…

代码随想录算法训练营第五十三天 | 1143.最长公共子序列,1035.不相交的线,53. 最大子序和 动态规划

目录 1143.最长公共子序列 1035.不相交的线 53. 最大子序和 动态规划 1143.最长公共子序列 题目链接&#xff1a;1143. 最长公共子序列 &#xff08;1&#xff09;dp[ i ][ j ] 表示 text1 前 i 个元素、text2 前 j 个元素的最长公共子序列的长度&#xff1b; &#xff08;2&a…

在 Linux 上修改 Oracle 控制文件、日志文件和数据文件的目录的脚本

以下是一个交互式的 Bash 脚本示例&#xff0c;用于在 Linux 上修改 Oracle 数据库控制文件、日志文件和数据文件的目录。脚本会要求您输入要修改的路径&#xff0c;并根据输入的路径执行相应的修改操作。 #!/bin/bash# 修改以下变量以匹配您的 Oracle 数据库设置 ORACLE_SID&…

30、LCD1602

LCD1602介绍 LCD1602&#xff08;Liquid Crystal Display&#xff09;液晶显示屏是一种字符型液晶显示模块&#xff0c;可以显示ASCII码的标准字符和其它的一些内置特殊字符&#xff0c;还可以有8个自定义字符 显示容量&#xff1a;162个字符&#xff0c;每个字符为5*7点阵 …