华为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)数对:
第一行三个正整数m,n,R
第二行m个正整数,表示集合A
第三行n个正整数,表示集合B
输入限制:
1<=R<=100000,1<=n,m<=100000,1<=Ai,Bj<=1000000000
这个题目和ABR很像,但是条件差不就那么一点点。
每组数对输出一行Ai和Bj,以空格隔开。
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]);
});
}
}
4 2 6
1 3 6 4
2 4 1
1 2
3 4
4 4
下一篇:华为OD机试 - 荒岛求生 - 栈Stack(Java 2023 B卷 100分)
本文收录于,华为OD机试(JAVA)真题(A卷+B卷)
刷的越多,抽中的概率越大,每一题都有详细的答题思路、详细的代码注释、样例测试,发现新题目,随时更新,全天CSDN在线答疑。