华为OD机试真题——找出两个整数数组中同时出现的整数(2025A卷:100分)Java/python/JavaScript/C++/C语言/GO六种最佳实现

article/2025/6/25 13:41:35

在这里插入图片描述

2025 A卷 100分 题型

本文涵盖详细的问题分析、解题思路、代码实现、代码详解、测试用例以及综合分析;
并提供Java、python、JavaScript、C++、C语言、GO六种语言的最佳实现方式!

2025华为OD真题目录+全流程解析/备考攻略/经验分享

华为OD机试真题《找出两个整数数组中同时出现的整数》:


目录

    • 题目名称:找出两个整数数组中同时出现的整数
      • 题目描述
    • Java
      • 问题分析
      • 解题思路
      • 代码实现
      • 代码详细解析
      • 测试示例
      • 综合分析
    • python
      • 问题分析
      • 解题思路
      • 代码实现
      • 代码解析
      • 测试示例
      • 综合分析
    • JavaScript
      • 问题分析
      • 解题思路
      • 代码实现
      • 代码解析
      • 测试示例
      • 综合分析
    • C++
      • 问题分析
      • 解题思路
      • 代码实现
      • 代码详细解析
      • 测试示例
      • 综合分析
    • C语言
      • 问题分析
      • 解题思路
      • 代码实现
      • 代码解析
      • 测试示例
      • 综合分析
    • GO
      • 问题分析
      • 解题思路
      • 代码实现
      • 代码解析
      • 测试示例
      • 综合分析


题目名称:找出两个整数数组中同时出现的整数


属性内容
知识点哈希表、计数统计、排序
时间限制1秒
空间限制256MB
限定语言不限

题目描述

给定两个整数数组(数组元素范围在[-1000,1000]),找出所有在两个数组中同时出现的整数,并按升序排列返回。若同一数字在两个数组中出现的次数不同,则按较小次数输出(例如:数字3在数组A出现2次、数组B出现3次,则结果中输出两个3)。若不存在共同整数,返回空数组。

输入描述
两行输入:
第一行为数组A的数字,用逗号分隔,例如:1,2,3,1
第二行为数组B的数字,用逗号分隔,例如:1,1,2,4

输出描述
输出结果按升序排列,用逗号分隔。例如:1,1,2(A和B中均包含1和2,其中1出现2次且取较小次数2,2出现1次)。若无交集,输出空字符串。

测试用例

  1. 输入:
    1,2,3
    1,1,2
    输出:1,2
  2. 输入:
    5,5,5
    6
    输出: (空)

Java

问题分析

给定两个整数数组,找出所有在两个数组中同时出现的整数,并按升序排列返回。若同一数字在两个数组中出现次数不同,则按较小次数输出。若不存在共同整数,返回空数组。

解题思路

  1. 读取输入:将输入的字符串转换为两个整数数组。
  2. 统计次数:使用哈希表统计每个数字在两个数组中的出现次数。
  3. 求交集:找出两个哈希表中都存在的数字,并取出现次数的较小值。
  4. 生成结果:将每个数字按较小次数重复添加到结果列表。
  5. 排序输出:对结果列表升序排列,并转换为逗号分隔的字符串。

代码实现

import java.util.*;public class Main {public static void main(String[] args) {// 1. 读取输入Scanner scanner = new Scanner(System.in);String lineA = scanner.nextLine();String lineB = scanner.nextLine();scanner.close();// 2. 分割字符串并转换为整数数组String[] partsA = lineA.split(",");int[] arrayA = new int[partsA.length];for (int i = 0; i < partsA.length; i++) {arrayA[i] = Integer.parseInt(partsA[i]);}String[] partsB = lineB.split(",");int[] arrayB = new int[partsB.length];for (int i = 0; i < partsB.length; i++) {arrayB[i] = Integer.parseInt(partsB[i]);}// 3. 统计数组A中各数字的出现次数Map<Integer, Integer> countA = new HashMap<>();for (int num : arrayA) {countA.put(num, countA.getOrDefault(num, 0) + 1);}// 4. 统计数组B中各数字的出现次数Map<Integer, Integer> countB = new HashMap<>();for (int num : arrayB) {countB.put(num, countB.getOrDefault(num, 0) + 1);}// 5. 遍历交集并生成结果列表List<Integer> result = new ArrayList<>();for (int num : countA.keySet()) {if (countB.containsKey(num)) {int minCount = Math.min(countA.get(num), countB.get(num));for (int i = 0; i < minCount; i++) {result.add(num);}}}// 6. 对结果列表排序Collections.sort(result);// 7. 格式化输出StringBuilder output = new StringBuilder();for (int i = 0; i < result.size(); i++) {output.append(result.get(i));if (i < result.size() - 1) {output.append(",");}}System.out.println(output);}
}

代码详细解析

  1. 读取输入

    • 使用 Scanner 读取两行输入字符串。
    • split(",") 将字符串按逗号分割成字符串数组。
    • 转换为整数数组 arrayAarrayB
  2. 统计次数

    • HashMap 存储每个数字及其出现次数。
    • countA.getOrDefault(num, 0) + 1 实现计数。
  3. 求交集

    • 遍历 countA 的键集合,检查是否存在于 countB
    • 若存在,取两次数的最小值,循环添加该数字到结果列表。
  4. 排序与输出

    • Collections.sort(result) 对结果升序排列。
    • StringBuilder 构建输出字符串,用逗号分隔元素。

测试示例

示例1:

  • 输入:
    1,2,3
    1,1,2
    
  • 输出:1,2
  • 解析:1在A中出现1次,B中出现2次 → 取1次;2均出现1次 → 取1次。

示例2:

  • 输入:
    5,5,5
    6
    
  • 输出:空字符串
  • 解析:无共同数字。

综合分析

  1. 时间复杂度

    • 统计次数:O(n + m),遍历两个数组。
    • 求交集:O(k),k为共同数字数量。
    • 排序:O(r log r),r为结果元素总数。
    • 总体时间复杂度为线性级别,适用于大数据量。
  2. 空间复杂度

    • 哈希表存储次数:O(n + m)。
    • 结果列表:O®。
  3. 优势

    • 哈希表高效统计:快速查找和统计次数。
    • 最小次数处理:直接比较并取较小值。
    • 逻辑清晰:分步骤处理,易于理解和维护。
  4. 适用性

    • 支持负数和大范围整数。
    • 处理大规模数据时性能稳定。

python

问题分析

我们需要找出两个整数数组中共同存在的所有整数,并按升序排列返回。如果同一个数字在两个数组中的出现次数不同,则按照较小的次数输出。例如,数组A中有3出现2次,数组B中有3出现3次,结果中需要输出两个3。如果没有共同数字,返回空数组。

输入输出示例:

  • 输入:两行逗号分隔的整数。
  • 输出:共同数字按升序排列的逗号分隔字符串,或空字符串。

解题思路

  1. 输入处理:将输入的字符串转换为整数列表。
  2. 统计次数:用哈希表统计每个数字在两个数组中的出现次数。
  3. 求交集:找到两个数组中共同存在的数字,并取较小的出现次数。
  4. 生成结果:按较小次数将数字重复添加到结果列表,并排序。
  5. 输出格式:将结果列表转换为逗号分隔的字符串。

代码实现

from collections import Counter# 步骤1:读取输入并转换为整数列表
a = list(map(int, input().split(',')))  # 输入示例:"1,2,3,1" → [1,2,3,1]
b = list(map(int, input().split(',')))  # 输入示例:"1,1,2,4" → [1,1,2,4]# 步骤2:统计每个数字的出现次数
count_a = Counter(a)  # 示例结果:Counter({1: 2, 2: 1, 3: 1})
count_b = Counter(b)  # 示例结果:Counter({1: 2, 2: 1, 4: 1})# 步骤3:求交集,保留较小次数
common = count_a & count_b  # 示例结果:Counter({1: 2, 2: 1})# 步骤4:生成结果列表并按升序排列
result = sorted(common.elements())  # 示例结果:[1, 1, 2]# 步骤5:格式化输出
print(','.join(map(str, result)) if result else '')  # 示例输出:"1,1,2"

代码解析

  1. 读取输入

    • input().split(','):将输入字符串按逗号分割成字符串列表。
      • 例如,输入 "1,2,3,1" 会被转换为 ["1", "2", "3", "1"]
    • map(int, ...)

http://www.hkcw.cn/article/FwbxUiXuuS.shtml

相关文章

KWIC—Implicit Invocation

KWIC—Implicit Invocation ✏️ KWIC—Implicit Invocation 文章目录 KWIC—Implicit Invocation&#x1f4dd;KWIC—Implicit Invocation&#x1f9e9;KWIC&#x1f9e9;核心组件&#x1f9e9;ImplementationScheme⚖️ 隐式调用 vs 显式调用对比 &#x1f31f; 总结 &#x…

JWT 入门

一、JWT 概述 1. 扩展(Cookie、Session、Token) 灵魂拷问&#xff1a;为什么你的淘宝账号关闭后&#xff0c;购物车还在&#xff1f;其实这是Cookie 在搞事情。它就像是一种入场券&#xff0c;有该入场券就可以随意进出关卡。但这有个致命的弱点&#xff0c;Cookie是存在客户…

传统液晶瓶颈待破?铁电液晶如何实现显示技术逆袭

一、传统液晶显示&#xff1a;繁华背后的技术枷锁 在消费电子与专业显示领域&#xff0c;液晶技术&#xff08;LCD&#xff09;凭借成熟的产业链和性价比优势&#xff0c;长期占据主流地位。然而&#xff0c;随着 VR/AR、车载显示、高端投影等新兴场景的崛起&#xff0c;传统液…

Mybatis:灵活掌控SQL艺术

在前面的文章中&#xff0c;小编分享了spring中相关的知识&#xff0c;但是没有分享到&#xff0c;如何去更高效操作数据库。 操作数据库传统的方法就是通过JDBC来进行操作。 这个传统方法使用上可谓是够麻烦的 1.首先创建一个数据源对象 2.设置该数据源的属性&#xff08;…

STM32CubeMX定时器配置

STM32CubeMX定时器配置 一&#xff0c;Mode界面1&#xff0c;Slave Mode (从模式)2&#xff0c;Trigger Source (触发源) 三&#xff0c;Channelx&#xff08;通道模式&#xff09;1&#xff0c;Input Capture2&#xff0c;Output Compare3&#xff0c;PWM Generation4&#xf…

可灵2.1 vs Veo 3:AI视频生成谁更胜一筹?

在Google发布Veo 3几天后,可灵显然感受到了压力,发布了即将推出的视频模型系列可灵 2.1的早期体验版。 据我了解,有三种不同的模式: 可灵 2.1 标准模式: 720p分辨率 仅支持图像转视频(生成更快,一致性更好) 5秒视频仍需20积分 可灵 2.1 专业模式: 1080p分辨率 仅在图…

推荐几个不错的AI入门学习视频

引言&#xff1a;昨天推荐了几本AI入门书&#xff08;AI入门书&#xff09;&#xff0c;反响还不错。今天&#xff0c;我再推荐几个不错的AI学习视频&#xff0c;希望对大家有帮助。 网上关于AI的学习视频特别多。有收费的&#xff0c;也有免费的。我今天只推荐免费的。 我们按…

【机器学习】支持向量机

文章目录 一、支持向量机简述1.概念2.基本概念3.算法介绍4.线性可分5.算法流程 二、实验1.代码介绍2.模型流程3.实验结果4.实验小结 一、支持向量机简述 1.概念 支持向量机&#xff08;SVM&#xff09;是一类按监督学习方式对数据进行二元分类的广义线性分类器&#xff0c;其…

scale up 不能优化 TCP 聚合性能

scale up 作为一种系统扩展优化的方法&#xff0c;旨在提高系统组件的执行效率&#xff0c;比如替换更高性能的硬件或算法。是否可以此为依据优化 TCP 呢&#xff0c;例如通过多条路径聚合带宽实现吞吐优化(对&#xff0c;还是那个 MPTCP)&#xff0c;答案是否定的。 因为 TCP…

深度学习|pytorch基本运算-广播失效

【1】引言 前序文章中&#xff0c;已经学习了pytorch基本运算中的生成随机张量、生成多维张量&#xff0c;以及张量的变形、加减和广播运算。 今天的文章在之前学习的基础上&#xff0c;进一步探索。 前序文章链接为&#xff1a; 深度学习|pytorch基本运算-CSDN博客 【2】…

Asp.Net Core SignalR的分布式部署

文章目录 前言一、核心二、解决方案架构三、实现方案1.使用 Azure SignalR Service2.Redis Backplane(Redis 背板方案&#xff09;3.负载均衡配置粘性会话要求无粘性会话方案&#xff08;仅WebSockets&#xff09;完整部署示例&#xff08;Redis Docker&#xff09;性能优化技…

Linux环境搭建MCU开发环境

操作系统版本&#xff1a; ubuntu 22.04 文本编辑器&#xff1a; vscode 开发板&#xff1a; stm32f103c8t6 调试器&#xff1a; st-link 前言 步骤一&#xff1a; 安装交叉编译工具链 步骤二&#xff1a; 创建工程目录结构 步骤三&#xff1a; 调试…

VR/AR 视网膜级显示破局:10000PPI 如何终结颗粒感时代?

一、传统液晶 “纱窗效应”&#xff1a;VR 沉浸体验的最大绊脚石 当用户首次戴上 VR 头显时&#xff0c;眼前密密麻麻的像素网格往往打破沉浸感 —— 这正是传统液晶显示在近眼场景下的致命缺陷。受限于 500-600PPI 的像素密度&#xff0c;即使达到 4K 分辨率&#xff0c;等效到…

【教学类-36-10】20250531蝴蝶图案描边,最适合大小(一页1图1图、2图图案不同、2图图案相同对称)

背景说明: 之前做了动物头像扇子(描边20),并制作成一页一套图案对称两张 【教学类-36-09】20250526动物头像扇子的描边(通义万相)对称图40张,根据图片长宽,自动旋转图片,最大化图片-CSDN博客文章浏览阅读1k次,点赞37次,收藏6次。【教学类-36-09】20250526动物头像…

灌水论坛系统总体设计文档

一、实验题目 灌水论坛系统 二、实验目的 旨在通过一个相对完整且功能丰富的Web应用实例&#xff0c;全面地实践和巩固Web开发所需的各项核心技术和工程方法&#xff0c;从而提升其综合应用能力和解决实际开发问题的能力。它不仅仅是完成一个软件&#xff0c;更是一个学习、…

TK海外抢单源码/指定卡单

​ 抢单源码&#xff0c;有指定派单&#xff0c;打针&#xff0c;这套二改过充值跳转客服 前端vue 后端php 两端分离 可二开 可以指定卡第几单&#xff0c;金额多少&#xff0c; 前后端开源 PHP7.2 MySQL5.6 前端要www.域名&#xff0c;后端要admin.域名 前端直接静态 伪静…

印军高官为何指责83架光辉订单0交付 国产战机交付延迟

印度空军参谋长辛格在印度工业联合会举办的年度商业峰会上严厉批评本国的航空制造业,指出印度大型国防项目的落实没有如期进行,包括国产“光辉”战机在内的战斗机向空军交付均出现延迟。根据2021年与印度斯坦航空有限公司签订的价值4800亿卢比(约合404亿元人民币)的合同,印…

年轻人开始主动挂艾草了 老习俗焕发新活力

今年端午节当天,“年轻人开始主动挂艾草了”登上小红书APP热点榜首,截至晚上9点30分浏览量达到918万次。菜市场几块钱一把的野生艾草,在年轻人手中经过巧手改造,搭配菖蒲叶、玉簪叶、香樟果和铃铛,变成了身价百元的“祈福门挂”。如今,挂艾草不再只是简单的节庆习俗,而是…

Roguelike地牢:混沌系统与涌现式玩法设计

目录 Roguelike地牢:混沌系统与涌现式玩法设计引言第一章 地牢生成算法1.1 多级生成策略1.2 柏林噪声应用第二章 道具生态系统2.1 属性耦合模型2.2 道具稀有度系统第三章 敌人行为树3.1 自适应难度3.2 状态机设计第四章 永久死亡机制4.1 元进度系统4.2 遗产继承设计第五章 光照…

【数据集】基于累计分布函数匹配CDF Matching与多分辨率卡尔曼滤波MKF相结合的地表温度(2002-2020)

目录 数据概述一、输入数据二、生产流程与处理方法步骤一:生成被动微波LST数据(PMW LST)步骤二:CDF匹配提高高分辨率LST质量步骤三:多分辨率卡尔曼滤波(MKF)融合生成全时空覆盖LST三、模拟效果与实验结果四、生成空间完整全天候LST五、验证与精度评估数据下载下载方式1:…