华为OD机试 - 事件推送(Java 2023 B卷 100分)

目录

华为OD机试 2023B卷题库疯狂收录中,刷题++点这里++

专栏导读

本专栏收录于《华为OD机试(JAVA)真题(A卷+B卷)》

刷的越多,抽中的概率越大,每一题都有详细的答题思路、详细的代码注释、样例测试,发现新题目,随时更新,全天CSDN在线答疑。

一、题目描述

同一个数轴X上有两个点的集合A={A1,A2,...,Am}和B={B1,B2,...,Bn},Ai和Bj均为正整数,A、B已经按照从小到大排好序,

A、B均不为空,给定一个距离R(正整数),列出同时满足如下条件的所有(Ai,Bj)数对:

  1. Ai<= Bj
  2. Ai,Bj之间的距离小于等于R
  3. 在满足1,2的情况下,每个Ai只需输出距离最近的Bj
  4. 输出结果按Ai从小到大的顺序排序

二、输入描述

第一行三个正整数m,n,R

第二行m个正整数,表示集合A

第三行n个正整数,表示集合B

输入限制:

1<=R<=100000,1<=n,m<=100000,1<=Ai,Bj<=1000000000

这个题目和ABR很像,但是条件差不就那么一点点。

三、输出描述

每组数对输出一行Ai和Bj,以空格隔开。

四、Java算法源码

java 复制代码
package com.guor.od;

import java.util.*;

public class OdTest {
    public static void main(String[] args) {

        Scanner sc = new Scanner(System.in);

        int m = sc.nextInt();
        int n = sc.nextInt();
        int R = sc.nextInt();

        int[] A = new int[m];
        int[] B = new int[n];

        for (int i = 0; i < m; i++) {
            A[i] = sc.nextInt();
        }
        for (int i = 0; i < n; i++) {
            B[i] = sc.nextInt();
        }

        List<int[]> list = new ArrayList<>();

        for (int i = 0; i < A.length; i++) {
            int[] arr = new int[2];
            int index = 0;
            int min = Integer.MAX_VALUE;
            boolean flag = false;
            while (index < B.length) {
                if (A[i] <= B[index] && B[index] - A[i] <= R && B[index] - A[i] < min) {
                    min = B[index] - A[i];
                    arr[0] = A[i];
                    arr[1] = B[index];
                    flag = true;
                }
                index++;
            }
            if (flag) {
                list.add(arr);
            }
        }

        System.out.println();

        list.forEach(e -> {
            System.out.println(e[0] + " " + e[1]);
        });
    }
}

五、效果展示

1、输入

4 2 6

1 3 6 4

2 4 1

2、输出

1 2

3 4

4 4

🏆下一篇:华为OD机试 - 荒岛求生 - 栈Stack(Java 2023 B卷 100分)

🏆本文收录于,华为OD机试(JAVA)真题(A卷+B卷)

刷的越多,抽中的概率越大,每一题都有详细的答题思路、详细的代码注释、样例测试,发现新题目,随时更新,全天CSDN在线答疑。

相关推荐
Dxy12393102161 天前
Python 使用正则表达式将多个空格替换为一个空格
开发语言·python·正则表达式
故事和你911 天前
洛谷-数据结构1-1-线性表1
开发语言·数据结构·c++·算法·leetcode·动态规划·图论
techdashen1 天前
Rust项目公开征测:Cargo 构建目录新布局方案
开发语言·后端·rust
一 乐1 天前
电影院|基于springboot + vue电影院购票管理系统(源码+数据库+文档)
java·数据库·vue.js·spring boot·论文·毕设·电影院购票管理管理系统
星空椰1 天前
JavaScript 进阶基础:函数、作用域与常用技巧总结
开发语言·前端·javascript
恼书:-(空寄1 天前
JVM GC 日志分析 + 常见 GC 场景 + 实战参数调优
java·jvm
消失的旧时光-19431 天前
Spring Boot 实战(五):接口工程化升级(统一返回 + 异常处理 + 错误码体系 + 异常流转机制)
java·spring boot·后端·解耦
忒可君1 天前
C# winform 自制分页功能
android·开发语言·c#
Rust研习社1 天前
Rust 智能指针 Cell 与 RefCell 的内部可变性
开发语言·后端·rust
leaves falling1 天前
C++模板进阶
开发语言·c++