华为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在线答疑。

相关推荐
维吉斯蔡5 小时前
【VS Code / Cursor】文件夹右键快捷打开与文件类型自动关联
开发语言·程序人生·学习方法
蓝斯4975 小时前
[原创]《C#高级GDI+实战:从零开发一个流程图》第章:增加贝塞尔曲线,上、下、左、右连接点
java·c#·流程图
前端工作日常5 小时前
我学习到的Java 的 Service 分层:itf 和 impl 到底是什么?
java·后端
都叫我大帅哥6 小时前
Spring @Transactional 注解完全指南
java·spring
Java成神之路-6 小时前
G1 垃圾回收器 :SATB + TAMS核心机制深度解析
java·jvm
前端工作日常6 小时前
我学习到的JIT即时编译与机器码缓存失效
java·后端
带刺的坐椅6 小时前
Solon 的 10 种 HTTP 服务器:改一行依赖,换一个引擎
java·solon·jetty·undertow·mcp-server·htttp
luj_17687 小时前
星火科技助力边远地区防病攻坚
c语言·开发语言·c++·经验分享·算法
always_TT7 小时前
【Python 日志记录:logging 模块入门】
开发语言·python·php
xcLeigh7 小时前
Go入门:变量声明的五种方式详解
java·开发语言·golang