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

专栏导读

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

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

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

一、题目描述

同一个数轴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算法源码

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机试 - 事件推送(Java 2023 B卷 100分)-LMLPHP


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

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

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

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

09-22 20:13