给定两个数组 和 ,若数组 的某个元素 与数组 中的某个元素 满足 ,则寻找到一个匹配的二元组 ,请统计再这两个数组 和 中,一共存在多少个这样的二元组。
第一行输入数组 的长度 ;
第一行输入数组 的长度 ;
第三行输入数组 的值;
第四行输入数组 的值。
数组中数值的取值均小于
输出匹配的二元组个数
5
4
1 2 3 4 5
4 3 2 1
4
若下标从 开始,则匹配的二元组分别为(0,3), (1,2), (2,1), (3,0)
,共计 个
6
3
1 2 4 4 2 1
1 2 3
4
若下标从 开始,则匹配的二元组分别为(0,0), (1,1), (4,1), (5,0)
,共计 个
若不存在相等的值,则输出 ,所采用的算法复杂度需小于 ,否则会超时。输入数组中允许出现重复数字,一个数字可以匹配多次。
import java.util.Arrays;
import java.util.Scanner;
/**
* Created with IntelliJ IDEA.
* Author: Amos
* E-mail: amos@amoscloud.com
* Date: 2022/11/28
* Time: 15:29
* Description:
*/
public class Main0168 {
public static void main(String[] args) {
try (Scanner scanner = new Scanner(System.in)) {
int m = scanner.nextInt();
int n = scanner.nextInt();
int[] arrayA = new int[m];
int[] arrayB = new int[n];
for (int i = 0; i < m; i++) {
arrayA[i] = scanner.nextInt();
}
for (int i = 0; i < n; i++) {
arrayB[i] = scanner.nextInt();
}
int count = solution(arrayA, arrayB);
System.out.println(count);
}
}
private static int solution(int[] arrayA, int[] arrayB) {
int count = 0;
Arrays.sort(arrayB);
for (int i : arrayA) {
int res = Arrays.binarySearch(arrayB, i);
if (res >= 0) {
count++;
}
}
return count;
}
}