当前位置: 首页 > news >正文

统计匹配的二元组个数 - 华为OD机试真题(A卷、JavaScript题解)

华为OD机试题库《C++》限时优惠 9.9

华为OD机试题库《Python》限时优惠 9.9

华为OD机试题库《JavaScript》限时优惠 9.9

针对刷题难,效率慢,我们提供一对一算法辅导, 针对个人情况定制化的提高计划(全称1V1效率更高)。

看不懂有疑问需要答疑辅导欢迎私VX: code5bug

华为OD机试真题

题目描述

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

输入描述

  • 第一行输入数组A的长度M
  • 第二行输入数组B的长度N
  • 第三行输入数组A的值(空格分隔)
  • 第四行输入数组B的值(空格分隔)

备注

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

输出描述

输出匹配的二元组个数。

示例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

题解

  1. 统计频次:首先统计数组B中每个数字出现的次数。
  2. 遍历匹配:遍历数组A,对于每个元素,检查中是否存在该数字。如果存在,则将该数字的频率累加到结果中。
  3. 复杂度分析:统计频次的时间复杂度为O(N),遍历匹配的时间复杂度为O(M),总时间复杂度为O(M + N),满足题目要求的小于O(N^2)的复杂度。

JavaScript

const rl = require('readline').createInterface({input: process.stdin,output: process.stdout,
});
var iter = rl[Symbol.asyncIterator]();
const readline = async () => (await iter.next()).value;// Author: code5bug
(async () => {const M = parseInt(await readline());const N = parseInt(await readline());const A = (await readline()).split(' ').map(Number);const B = (await readline()).split(' ').map(Number);// 统计数组B中每个数字出现的频率const freq = {};for (const num of B) {freq[num] = (freq[num] || 0) + 1;}let count = 0;// 遍历数组A,统计匹配的二元组个数for (const num of A) {if (freq[num] !== undefined) {count += freq[num];}}console.log(count);rl.close();
})();

整理题解不易, 如果有帮助到您,请给点个赞 ‍❤️‍ 和收藏 ⭐,让更多的人看到。🙏🙏🙏

http://www.xdnf.cn/news/329761.html

相关文章:

  • 宝塔面板,删除项目后还能通过域名进行访问
  • 从人脸扫描到实时驱动,超写实数字分身技术解析
  • Go语言中的并发编程--详细讲解
  • 【赵渝强老师】TiDB的备份恢复策略
  • 将本地项目提交到新建的git仓库
  • 【性能工具】一种简易hook bitmap创建的插件使用
  • Docker + Watchtower 实现容器自动更新:高效运维的终极方案
  • 算法研习:最大子数组和问题深度剖析
  • YOLO-POSE 姿态扩充
  • CUDA:out of memory的解决方法(实测有效)
  • 心智领航・数启未来 | AI数字化赋能精神心理医疗学术大会重磅来袭,5月10日广州附医华南医院开启智慧对话!
  • 【C++贪心】P9344 去年天气旧亭台|普及
  • Spark处理过程-转换算子和行动算子
  • NumPy 2.x 完全指南【一】简介
  • 混淆矩阵(Confusion Matrix)
  • Qt开发经验 --- 避坑指南(5)
  • python打卡day18
  • Spring MVC中跨域问题处理
  • 把一个过大的文件夹分成若干个 ZIP 分卷
  • 雅努斯问题(Janus Problem)及解决方案
  • 三轴云台之模糊控制算法篇
  • Golang的linux运行环境的安装与配置
  • AB测试面试题
  • MCP学习
  • 行动作用作用
  • 后端返回文件流,前端展示图片
  • 003 系统和入门指令
  • 【基础知识】常见公式计算(三)
  • 情感共鸣+海外网红营销:跨境电商如何讲好“母亲节”故事?
  • BRAM 64bit位宽报错问题