华为OD机试真题 Java 实现【统计匹配的二元组个数】【2023Q2 200分】

一、题目描述

给定两个数组A和B,若数组A的某个元素A[i]与数组B中的某个元素B[j]满足 A[i] == B[j],则寻找到一个值匹配的二元组(i, j)。

请统计在这两个数组A和B中,一共存在多少个这样的二元组。

二、输入描述

第一行输入数组A的长度M;
第二行输入数组B的长度N;
第三行输入数组A的值;
第四行输入数组B的值。

1 <= M, N <= 100000

A, B数组中数值的取值均小于100000;

三、输出描述

输出匹配的二元组个数。

四、补充说明

若不存在相等的值,则输出0。

所采用的算法复杂度需小于O(N2),否则会超时。输入数组中允许出现重复数字,一个数字可以匹配多次。

五、解题思路

  1. 读取输入的数组 A 的长度 M 和数组 B 的长度 N
  2. 创建数组 A 和数组 B 并读取输入的值。
  3. 创建一个哈希表 map 用于记录数组 A 中每个元素的出现次数。键为元素的值,值为该元素出现的次数。
  4. 初始化变量 sum 为 0,用于记录匹配的二元组个数。
  5. 遍历数组 B,对于每个元素 b:
    • 通过哈希表 map 获取元素 b 在数组 A 中出现的次数,并将其加到 sum 中。

你可能感兴趣的:(java,华为,开发语言,面试,算法)