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

华为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,每个数处理时间为常数
http://www.xdnf.cn/news/9007.html

相关文章:

  • 162. 寻找峰值
  • 【芯片设计中的跨时钟域信号处理:攻克亚稳态的终极指南】
  • Rust 1.0 发布十周年,梦想再度扬帆起航!
  • Class ‘AlibabaCloud\Tea\Utils\Utils\RuntimeOptions‘ not found
  • 人脸识别备案快速高效服务
  • 有效的字母异位符--LeetCode
  • 2025年5月架构真题回忆
  • SQL连接字符串的差异造成远程服务器不能正常连接
  • 数据库入门教程:以商品订单系统为例
  • 篇章四 数据结构——顺序表
  • 代码随想录算法训练营第60期第四十八天打卡
  • 010501上传下载_反弹shell-渗透命令-基础入门-网络安全
  • 《棒球百科》国家一级运动员和二级运动员的区别·棒球1号位
  • 【bug排查记录】由Redission配置引发的Satoken血案
  • Nginx 核心功能深度解析:负载均衡、缓存加速与安全防护
  • Structure-Revealing Low-Light Image Enhancement Via Robust Retinex Model论文阅读
  • 如何最简单、通俗地理解Pytorch?神经网络中的“梯度”是怎么自动求出来的?PyTorch的动态计算图是如何实现即时执行的?
  • 重构开发范式!飞算JavaAI革新Spring Cloud分布式系统开发
  • 图像分割技术的实现与比较分析
  • Windows计算机管理:定时调用指定的可执行程序(.exe)
  • DHCPig:使用 scapy 网络库的 DHCP 耗尽脚本!全参数详细教程!Kali Linux教程!
  • 数据治理进阶:数据治理基础概念解释【附全文阅读】
  • sqli-labs第二十六关——Trick with commentspace
  • Python-numpy中常用的统计函数及转换函数
  • 通俗理解线性与非线性、时变与时不变系统,和数值不稳定性机制
  • 内存管理 : 03多级页表和快表
  • MCP 协议结合大模型使用浅讲
  • 【解读—论文】引导性掩码表示学习以捕捉心电图的时空关系
  • 2025/5/25 学习日记 linux进阶命令学习
  • ISO 20000体系:服务请求管理、问题管理、事件管理区别与联系