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

华为OD机试真题——数据分类(2025B卷:100分)Java/python/JavaScript/C++/C语言/GO六种最佳实现

在这里插入图片描述

2025 B卷 100分 题型

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

本文收录于专栏:《2025华为OD真题目录+全流程解析/备考攻略/经验分享》

华为OD机试真题《数据分类》:


目录

    • 题目名称:数据分类
      • 题目描述
    • Java
      • 问题分析
      • 解题思路
      • 代码实现
      • 代码详细解析
      • 示例测试
      • 综合分析
    • python
      • 问题分析
      • 解题思路
      • 代码实现
      • 代码详细解析
      • 示例测试
      • 综合分析
    • JavaScript
      • 问题分析
      • 解题思路
      • 代码实现
      • 代码详细解析
      • 示例测试
      • 综合分析
    • C++
      • 问题分析
      • 解题思路
      • 代码实现
      • 代码详细解析
      • 示例测试
      • 综合分析
    • C语言
      • 问题分析
      • 解题思路
      • 代码实现
      • 代码详细解析
      • 示例测试
      • 综合分析
    • GO
      • 问题分析
      • 解题思路
      • 代码实现
      • 代码详细解析
      • 示例测试
      • 综合分析


题目名称:数据分类


  • 知识点:位运算、逻辑处理
  • 时间限制:1秒
  • 空间限制:256MB
  • 限定语言:不限

题目描述

对一个数据 a 进行分类,分类方法为:

  1. a(四个字节大小)的四个字节的十进制值相加,得到一个总和。
  2. 将此总和对一个给定的值 b 取模。
  3. 若取模结果小于另一个给定值 c,则该结果为 a 的有效类型;否则类型无效。

输入描述

  • 输入12个数据,以空格分隔:
    • 第一个数据为 c,第二个数据为 b,剩余10个数据为待分类的整数(每个数 ≤ 1e9)。

输出描述

  • 统计有效类型中包含数据最多的类型,输出其数据个数。若所有类型均无效,输出 0

示例1
输入:

3 4 256 257 258 259 260 261 262 263 264 265  

输出:

3  

说明

  • 每个数转换为四个字节的十六进制字符串(不足8位补前导0),例如256补为 00000100,每个字节转为十进制相加,结果为 0 + 0 + 1 + 0 = 1
  • 10个数的总和分别为 1, 2, 3, 4, 5, 6, 7, 8, 9, 10,对4取模结果为 1, 2, 3, 0, 1, 2, 3, 0, 1, 2
  • c=3,有效类型为0、1、2,其中类型1和2各有3个数据,故输出3。

补充说明

  • 每个整数需转换为四个字节的十六进制表示,例如 256 转为 00000100,拆分后字节为 0x00, 0x00, 0x01, 0x00
  • 需统计所有有效类型的出现次数,取最大值。

Java

问题分析

我们需要根据输入的整数数组进行分类,分类规则基于每个整数的四个字节之和的模运算结果。统计有效类型中出现次数最多的数据个数,若所有类型无效则输出0。


解题思路

  1. 输入处理:读取c、b和10个待分类的整数。
  2. 字节和计算:将每个整数拆分为四个字节,计算各字节的十进制和。
  3. 模运算与分类:计算字节和对b取模,判断是否小于c,记录有效类型。
  4. 统计与输出:统计有效类型的出现次数,输出最大值。

代码实现

import java.util.*;public class Main {public static void main(String[] args) {Scanner scanner = new Scanner(System.in);String[] input = scanner.nextLine().split(" ");// 解析输入参数int c = Integer.parseInt(input[0]);int b = Integer.parseInt(input[1]);int[] nums = new int[10];for (int i = 0; i < 10; i++) {nums[i] = Integer.parseInt(input[i + 2]);}Map<Integer, Integer> typeCount = new HashMap<>(); // 统计有效类型出现次数for (int num : nums) {// 计算四个字节的十进制和int sum = 0;sum += (num >> 24) & 0xFF; // 最高位字节sum += (num >> 16) & 0xFF;sum += (num >> 8) & 0xFF;sum += num & 0xFF; // 最低位字节int mod = sum % b; // 取模结果if (mod < c) { // 判断是否有效typeCount.put(mod, typeCount.getOrDefault(mod, 0) + 1);}}// 找出最大出现次数int max = 0;for (int count : typeCount.values()) {if (count > max) max = count;}System.out.println(max);}
}

代码详细解析

  1. 输入处理:使用Scanner读取输入并分割成字符串数组,解析出cb和10个整数。
  2. 字节和计算
    • 通过位运算(num >> n) & 0xFF依次提取四个字节的值。
    • 累加四个字节的十进制值得到总和。
  3. 模运算与分类:计算总和对b取模,若结果小于c则记录到哈希表中。
  4. 统计与输出:遍历哈希表的值,找到最大出现次数并输出。

示例测试

示例1输入:

3 4 256 257 258 259 260 261 262 263 264 265

输出

3

解析:有效类型为0、1、2,类型1和2各出现3次。

示例2输入:

5 3 1 2 3 4 5 6 7 8 9 10

输出

10

解析:所有模结果均小于5,所有类型有效,最大值10。

示例3输入:

0 1 100 200 300 400 500 600 700 800 900 1000

输出

0

解析c=0,所有模结果不小于0,无有效类型。


综合分析

  1. 时间复杂度:O(n),其中n=10,每个数处理时间为常数

相关文章:

  • 「AR眼镜+智慧应急管理平台+视频联网」——矿山能源数智化转型的“安全之眼”与“效率引擎”
  • 如何在 Django 中集成 MCP Server
  • AI时代新词-AI增强现实(AI - Enhanced Reality)
  • [Java实战]Spring Boot整合达梦数据库连接池配置(三十四)
  • Python——day37早停策略和模型权重的保存
  • pyqt中添加资源文件
  • 2025.05.09【Bubblemap】气泡图深入解析
  • numpy与matplotlib学习——数据可视化入门
  • Selenium 测试框架 - .NET
  • 因重新安装python新版本,pycharm提示找不到python.exe(No Python at“c:\python.exe“)问题解决方法
  • AI时代新词-AI伦理(AI Ethics)
  • 李沐动手深度学习(pycharm中运行笔记)——10.多层感知机+从零实现+简介实现
  • Pycharm的简单介绍
  • docker compose yml 启动的容器中,如何使用linux环境变量赋值
  • 3DVR拍摄指南:从理论到实践
  • 【愚公系列】《生产线数字化设计与仿真》004-颜色分类站仿真(基础概念)
  • JAVA 学习日志
  • AI智能混剪视频大模型开发方案:从文字到视频的自动化生成·优雅草卓伊凡
  • 《基于Keepalived+LVS+Web+NFS的高可用集群搭建》
  • 集成30+办公功能的实用工具
  • 百度云建设网站/培训平台有哪些
  • seo自动优化软件安卓/优化怎么做
  • 直通车代运营/网站优化排名软件哪些最好
  • wordpress 如何搬家/seo职业培训学校
  • 网站首页空白 wordpress/企业建站
  • 网站设计专业实验室建设/软文写作什么意思