华为OD机考-异常的打卡记录-字符串(JAVA 2025B卷)



java 复制代码
public class AbnormalAttendance {

    static class Attendance{
        String id;
        Integer time;
        Integer distance;
        String actualDeviceNumber;
        String registeredDeviceNumber;

        public Attendance(String id, Integer time, Integer distance, String actualDeviceNumber, String registeredDeviceNumber) {
            this.id = id;
            this.time = time;
            this.distance = distance;
            this.actualDeviceNumber = actualDeviceNumber;
            this.registeredDeviceNumber = registeredDeviceNumber;
        }

        public String getId() {
            return id;
        }

        public void setId(String id) {
            this.id = id;
        }

        public Integer getTime() {
            return time;
        }

        public void setTime(Integer time) {
            this.time = time;
        }

        public Integer getDistance() {
            return distance;
        }

        public void setDistance(Integer distance) {
            this.distance = distance;
        }

        public String getActualDeviceNumber() {
            return actualDeviceNumber;
        }

        public void setActualDeviceNumber(String actualDeviceNumber) {
            this.actualDeviceNumber = actualDeviceNumber;
        }

        public String getRegisteredDeviceNumber() {
            return registeredDeviceNumber;
        }

        public void setRegisteredDeviceNumber(String registeredDeviceNumber) {
            this.registeredDeviceNumber = registeredDeviceNumber;
        }
    }
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        while (sc.hasNext()) {
            int N = sc.nextInt();
            sc.nextLine();
//            2
//            {id},{time},{distance},{actualDeviceNumber},{registeredDeviceNumber}
//            100000,10,1,ABCD,ABCD
//            100000,50,10,ABCD,ABCD
            List<String> list = new ArrayList<>(N);
            for(int i=0;i<N;i++){
                String nextLine = sc.nextLine();
                list.add(nextLine);
            }
            solve(list,N);
        }
    }
    public static void solve(List<String> list,int N){
        List<Attendance> attendanceList = new ArrayList<>(N);
        for(String line:list){
            String[] split = line.split(",");
            Attendance attendance = new Attendance(split[0], Integer.parseInt(split[1]), Integer.parseInt(split[2]), split[3], split[4]);
            attendanceList.add(attendance);
        }
        List<Integer> index = new ArrayList<>(N);
        for(int i=0;i<N;i++){
            Attendance attendance = attendanceList.get(i);
            if(!attendance.getRegisteredDeviceNumber().equals(attendance.getActualDeviceNumber())){
                index.add(i);
            }
            for(int j=i+1;j<N;j++){
                Attendance attendance1 = attendanceList.get(j);
                if(Math.abs(attendance1.getTime()-attendance.getTime())<=60 && Math.abs(attendance1.getDistance()-attendance.getDistance())>5){
                    index.add(i);
                    index.add(j);
                }
            }
        }
        List<Integer> collect = index.stream().distinct().collect(Collectors.toList());
        if(collect.isEmpty()){
            System.out.println("null");
        }else{
            for(int i=0;i<collect.size();i++){
                System.out.print(list.get(collect.get(i)));
                if(i!=collect.size()-1){
                    System.out.print(";");
                }
            }
        }
    }
}
相关推荐
神の愛1 小时前
左连接查询数据 left join
java·服务器·前端
t***5441 小时前
如何配置Orwell Dev-C++使用Clang
开发语言·c++
CoderCodingNo1 小时前
【信奥业余科普】C++ 的奇妙之旅 | 13:为什么 0.1+0.2≠0.3?——解密“爆int”溢出与浮点数精度的底层原理
开发语言·c++
南境十里·墨染春水1 小时前
linux学习进展 线程同步——互斥锁
java·linux·学习
雨奔2 小时前
Kubernetes 联邦 Deployment 指南:跨集群统一管理 Pod
java·容器·kubernetes
杨凯凡2 小时前
【021】反射与注解:Spring 里背后的影子
java·后端·spring
lulu12165440782 小时前
Claude Code项目大了响应慢怎么办?Subagents、Agent Teams、Git Worktree、工作流编排四种方案深度解析
java·人工智能·python·ai编程
riNt PTIP2 小时前
SpringBoot创建动态定时任务的几种方式
java·spring boot·spring
老星*2 小时前
AI选股核心设计思路
java·ai·开源·软件开发
kongba0073 小时前
项目打包 Python Flask 项目发布与打包专家 提示词V1.0
开发语言·python·flask