华为OD机试2025A卷 – 统计匹配的二元组个数(Java & Python& JS & C++ & C )


最新华为OD机试

真题目录:点击查看目录
华为OD面试真题精选:点击立即查看

本题与2023年A卷基本一致:

https://blog.csdn.net/banxia_frontend/article/details/133105425

题目描述

给定两个数组A和B,若数组A的某个元素A[i]与数组B中某个元素B[j]满足 A[i] == B[j],则寻找到一个值匹配的二元组(i,j)。 请统计在这两个数组A和B中,一共存在多少个这样的二元组。

输入描述

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

备注: 若不存在相等的值,则输出0。 所采用的算法复杂度需小于O(N^2),否则会超时。 输入数组中允许出现重复数字,一个数字可以匹配多次。

输出描述

输出匹配的二元组个数

示例1

输入

5
4
1 2 3 4 5
4 3 2 1

输出

4

示例2

输入

6
3
1 2 4 4 2 1
1 2 3

输出

4

示例3

输入

4
1
1 2 3 4
1

输出

1

示例4

输入

6
3
1 1 2 2 4 5
2 2 4

输出

5

解题思路

本题要求统计在两个数组 AB 中,所有匹配的二元组 (i, j),即 A[i] == B[j] 的组合。由于直接使用暴力算法会导致时间复杂度达到 O(N^2),我们需要通过优化来降低时间复杂度。

1. 暴力算法的不足

直接使用暴力算法遍历数组 A 和 B 中的每一个元素对,检查 A[i] == B[j] 是否成立,显然会导致 O(m * n) 的时间复杂度(其中 mn 分别是数组 A 和 B 的长度)。这种方式在数组长度较大时,效率非常低,容易超时。

<

原文链接:华为OD机试2025A卷 – 统计匹配的二元组个数(Java & Python& JS & C++ & C )

© 版权声明
THE END
喜欢就支持一下吧
点赞8 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容