华为OD机试真题 Java 实现【异常的打卡记录】【2023Q1 100分】

news2024/11/19 2:28:47

在这里插入图片描述

一、题目描述

考勤记录是分析和考核职工工作时间利用情况的原始依据,也是计算职工工资的原始依据。

为了正确地计算职工工资和监督工资基金使用情况,公司决定对员工的收集打卡记录进行异常排查。

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

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

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

二、输入描述

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

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

三、输出描述

按顺序输出异常的打卡记录,分号隔开。

四、Java算法源码

/**
 * 异常打卡标准:
 * 1、实际设备号与注册设备号不一样
 * 2、同一个员工的两个打卡记录的时间小于60分钟 且 打卡距离超过5km。
 *
 * @autor 哪吒编程
 */
public static void main(String[] args) {
    Scanner sc = new Scanner(System.in);

    // 打卡记录数
    int num = Integer.parseInt(sc.nextLine());

    // 打卡异常记录
    List<String> errorList = new ArrayList<>();

    // key:工号,value:打卡记录集合
    Map<Integer, List<String>> map = new HashMap<Integer, List<String>>();
    for (int i = 0; i < num; i++) {
        // 工号,打卡时间(分钟),打卡距离(km),实际设备号,注册设备号
        String line = sc.nextLine();
        String[] arr = line.split(",");
        // 工号
        int id = Integer.parseInt(arr[0]);
        // 打卡时间(分钟)
        int clockTime = Integer.parseInt(arr[1]);
        // 打卡距离(km)
        int clockDistance = Integer.parseInt(arr[2]);

        // 实际设备号与注册设备号不一样,视为异常打卡
        if (!arr[3].equals(arr[4])) {
            errorList.add(line);
        }

        // 看看是否有同一个员工的重复打卡
        // 同一个员工的两个打卡记录的时间小于60分钟 且 打卡距离超过5km。
        List<String> preList = map.get(id);
        if (preList != null) {
            for (String preLine : preList) {
                // 工号,打卡时间(分钟),打卡距离(km),实际设备号,注册设备号
                String[] split = preLine.split(",");
                // 前后两次的打卡时间差
                int time = Math.abs(Integer.parseInt(split[1]) - clockTime);
                // 前后两次的打卡距离
                int distance = Math.abs(Integer.parseInt(split[2]) - clockDistance);
                // 如果满足 同一个员工的两个打卡记录的时间小于60分钟 且 打卡距离超过5km,则这两次都是异常打卡
                if (time < 60 && distance > 5) {
                    // 打卡异常记录
                    errorList.add(preLine);
                    errorList.add(line);
                }
            }
        }

        List<String> currentList = new ArrayList<String>();
        // 如果包含当前id,追加新的打卡记录
        if (map.containsKey(id)) {
            currentList = map.get(id);
        }

        // 打卡记录
        currentList.add(line);
        map.put(id, currentList);
    }

    if (errorList.size() == 0) {
        System.out.println("null");
        return;
    }

    StringBuilder builder = new StringBuilder();
    for (String error : errorList) {
        builder.append(error).append(";");
    }
    builder.deleteCharAt(builder.length() - 1);

    System.out.println(builder);
}

五、效果展示

1、输入

6
1,10,1,100,100
1,80,10,100,100
1,120,16,100,100
2,80,10,200,200
2,150,15,200,200
3,150,15,200,300

2、输出

1,80,10,100,100;1,120,16,100,100;3,150,15,200,300

3、说明

  1. 根据规则,先比较实际设备号和注册设备号,如果不同,则是异常打卡记录;
  2. 比较相同工号的打卡记录,如果两个打卡记录的时间小于60分钟 且 打卡距离超过5km,则这两次都是异常打卡;

第二条打卡和第三条打卡,打卡时间小于60 且 打卡距离大于5,所以都是异常打卡。

第六条实际设备号和注册设备号不同,为异常打卡。

因此按顺序输出第二条打卡、第三条打卡、第六条打卡。

在这里插入图片描述


🏆下一篇:华为OD机试真题 Java 实现【获得完美走位】【2023Q1 100分】

🏆本文收录于,华为OD机试(JAVA)(2022&2023)

本专栏包含了最新最全的2023年华为OD机试真题,有详细的分析和Java解答。已帮助1000+同学顺利通过OD机考。专栏会持续更新,每天在线答疑。

在这里插入图片描述

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

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

相关文章

持续引领 | 通付盾入选数说安全《2023年中国网络安全市场全景图》!

5月16日&#xff0c;数说安全正式发布《2023年中国网络安全市场全景图》&#xff08;以下简称全景图&#xff09;&#xff0c;这是自2018年开始&#xff0c;数说安全发布的第六版全景图。 其中&#xff0c;通付盾入选自动化攻击防护&#xff08;Anti-Bot&#xff09;、移动应用…

【软件工程】面向对象开发全面总结

文章目录 前言一、引言二、面向对象开发的含义三、面向对象开发的原则1. 封装原则2. 继承原则3. 多态原则4. 抽象原则5. 接口隔离原则6. 依赖倒置原则 四、面向对象开发的基本原则1. 单一职责原则2. 开放封闭原则3. 里氏替换原则 五、面向对象开发的方法1. 面向对象分析&#x…

阿里云服务器安装MySQL的具体步骤

1.首先打开阿里云&#xff0c;找到自己对于的公网ip 2.这里我使用MobaXterm的远程连接工具&#xff0c;这个工具还是很不错的耶&#xff0c;就是复制上图的公网ip地址 3.填写完成之后&#xff0c;会让你输入你阿里云服务端登入的密码&#xff0c;也就是你阿里云重置实例的密码&…

深度学习的十条调参经验

目录 法则一:调参、模型和数据 1、调参是锦上添花的事 2、模型 3、数据

富文本编辑器 kindeditor 使用整理

kindeditor富文本编辑器忘记什么时候添加到项目中了&#xff0c;最近做一个功能需要在原有编辑器上自定义添加一些固定内容&#xff0c;于是对着编辑器文档研究了一番&#xff0c;在这里做一个使用方式整理。 1.下载kindeditor 下载地址如下&#xff1a; https://github.com/…

视频平台。。。。 。

1.py 读取图片视频流 from flask import Flask from flask import render_template import os images_path_list[‘D:\imgs\’filename for filename in os.listdir(‘D:\imgs\’) if filename.endswith(‘.jpg’)] print(images_path_list) def return_img_stream(img_local_p…

城市内涝监测预警系统解决方案

一、方案背景 城市化进程的逐渐加快&#xff0c;城市内人口大量增多&#xff0c;交通运输压力增大&#xff0c;城市建设越来越密集&#xff0c;道路铺建面积越来越多&#xff0c;城市化的发展改变了城市区域的地表环境&#xff0c;致使城市雨水不能像农村或是古代雨水那样&…

JVM调优神器,运用 Arthas 释放 Java应用性能的全部潜力

Arthas、jstack、jstat 和 jmap 都是 Java 调优工具&#xff0c;但它们之间有以下区别&#xff1a; Arthas 是一款全新的 Java 诊断与调试工具&#xff0c;不仅可以执行传统的 JVM 监控命令&#xff0c;还提供了许多其他高级特性&#xff0c;如实时监控、动态修改代码、反编译…

什么是容器

什么是容器 一&#xff1a;概念二&#xff1a;容器API类图2.1 Collection2.2 Set2.3 List2.4 Map 三&#xff1a;详细解释3.1 Collection接口3.1.1 Collection用法 3.2 Iterator接口3.3 List接口3.4 Comparable接口 四&#xff1a;如何选择数据结构4.1 衡量标准&#xff1a;读的…

CRM系统本地部署和云部署的优缺点

众所周知&#xff0c;CRM系统部署方式有两种&#xff0c;分别是本地部署和云部署。两者各有优缺点&#xff0c;企业可以按照自身的需求来进行选择。下面说说CRM不同部署方式的优缺点。 CRM本地部署 本地部署是指将CRM系统安装在企业自己的服务器上&#xff0c;并由企业自行维…

网工届封神的五条命令

文章目录 前言一、PING:测试与目标主机的连通性二、IPCONFIG:显示网络适配器的IP地址三、tracert:测试到达目标主机的路径四、arp -a:查询本机高速缓存项目五、route print&#xff1a;查看计算机路由表中的项目 前言 提示&#xff1a;这里可以添加本文要记录的大概内容&#…

【密码产品篇】VPN产品密钥体系结构

【密码产品篇】VPN产品密钥体系结构 VPN产品只有"设备密钥"是"非对称密钥"—【蘇小沐】 IPSec VPN密钥体系 IPSec VPN密钥体系&#xff1a;设备密钥、工作密钥、会话密钥。 IPsec VPN作用设备密钥非对称密钥对&#xff0c;包括签名密钥对和加密密钥对&a…

axios 的 qs库

1.axios官网中提到的qs库 axios官网 2. content-type和 参数 的关系 content-type : application/json&#xff0c;要求的参数格式是JSON {a:c,b:d }content-type :application / x-www-form-urlencoded 要求的参数格式是键值对拼接的方式 :keyvalue&keyvalue ac&bd…

Powerflex ready node

1 网络交换机 需要配置 2 网卡配置 3 磁盘残留信息清楚 4 磁盘顺序如何设置固定 特别是sda这块 #rpm -qa | grep EMC --查看当前安装的EMC Powerflex组件信息 安装客户端注意 需要使用如下 rpm --import RPM-GPG-KEY-ScaleIO #MDM_IP10.10.10.xx,10.10.20.xx rpm -i EMC-…

webpack将vue3单页面应用改造成多页面应用

上篇文章搞了个单页面vue&#xff0c;现在要将其改成多页面&#xff0c;只是简单尝试&#xff0c;给了例子 其实也就是改个webpack的入口和html模版的配置&#xff0c;其他的话&#xff0c;每个页面都有自己的vue和路由实例&#xff0c;pinia的话就共享吧 &#xff01;import…

界面控件DevExpress Blazor UI v22.2 - 报表、富文本编辑器组件增强

DevExpress拥有.NET开发需要的所有平台控件&#xff0c;包含600多个UI控件、报表平台、DevExpress Dashboard eXpressApp 框架、适用于 Visual Studio的CodeRush等一系列辅助工具&#xff0c;该组件拥有众多新产品和数十个具有高影响力的功能&#xff0c;可为桌面、Web和移动应…

Linux做爬虫被封IP怎么办

如果您的 Linux 爬虫被目标网站封禁了 IP 地址&#xff0c;可以考虑以下几种解决方案&#xff1a; 1、切换 IP 地址 您可以使用代理服务器或 PPTP 等工具来改变您的 IP 地址。这些工具可以模拟不同的网络位置并使您的爬虫变得更加隐蔽。例如在 Python 中&#xff0c;可以通过…

Maven基础学习---2、Maven安装与配置

1、Maven核心程序解压与配置文件 1、Maven官网地址 首页&#xff1a; Maven – Welcome to Apache Maven(opens new window) 下载页面&#xff1a; Maven – Download Apache Maven(opens new window) 下载链接&#xff1a; 具体下载地址&#xff1a;https://dlcdn.apache.…

爱奇艺新财报:转机频频

配图来自Canva可画 今年开年&#xff0c;一部《狂飙》拉开了剧集大幕。据灯塔专业版数据显示&#xff0c;《狂飙》的全网正片播放市占率最高超过30%&#xff0c;春节期间稳定在25%以上。《狂飙》的爆火在观众群体中掀起了一波追剧狂潮&#xff0c;除了一路“狂飙”的收视率外&…

mysql,oracle使用区别

1.1concat&#xff0c;concat_ws&#xff0c;group_concat 配置方式 临时&#xff1a;SET SESSION group_concat_max_len 10240; 永久&#xff1a;配置文件my.ini增加group_concat_max_len10240 查看配置&#xff1a;show variables like group_concat_max_len; 2.1oracle-sta…