news 2026/7/24 5:14:57

5.10华为OD机试真题 新系统 - 循环内存存取计算 (JavaPyCC++JsGo)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
5.10华为OD机试真题 新系统 - 循环内存存取计算 (JavaPyCC++JsGo)

环内存存取计算

2026 华为OD机试真题 5月10日华为OD上机新系统考试真题 100 分题型

点击查看华为 OD 机试真题完整目录:2026最新华为OD机试新系统卷 + 双机位C卷 真题题库目录|全覆盖题库 + 逐点算法考点详解

题目描述

1、当前有一段循环使用的内存来存放多个数据包,这块内存有两个索引:

  • read_index:读索引,指向当前已存储的数据包的起始位置,读取数据后,read_index 会跳转到下一个存放数据的起点。
  • write_index:写索引,指向当前可写入新数据包的起始位置,写入数据后,write_index 会跳转到下一个待写入数据包的起点。

2、整个循环内存对数据存放的起始地址有严格的对齐要求,通常字节对齐的值为 2 的整数倍,例如 2、4、8、16 等。

  • 整个循环内存的长度本身满足对齐要求是字节对齐值的整数倍。
  • 每个数据包存放的起始位置,必须是字节对齐的整数倍。
  • 存放数据以后,计算新的 write_index 也必须满足字节对齐要求。

3、循环内存是环形的,如果存入新的数据时超出了缓冲区末尾,剩余部分将从索引0开始继续存储。

现在给定以下输入:

  • capacity:内存的空间大小(capacity 的长度是字节对齐值的整数倍)
  • align:字节对齐的值(align 的值是 2n)
  • read_index:当前读索引的值
  • write_index:当前写索引的值(如果输入的 write_index=read_index,代表当前缓冲区没有任何内容,容量是满的)
  • pkt_size:写入的数据包的长度

请计算把数据包写入环形缓冲区后,write_index 的位置。如果在写入新的数据时,环形缓冲区放不下,则返回 -1。

2026 华为OD机试真题 5月10日华为OD上机新系统考试真题 100 分题型

输入描述

  • capacity:内存的空间大小
  • align:字节对齐的值
  • read_index:当前读索引的值
  • write_index:当前写索引的值
  • pkt_size:写入的数据包的长度

输入格式:capacity,align,read_index,write_index,pkt_size

输出描述

请计算把数据包写入环形缓冲区后,write_index 的位置。如果在写入新的数据时,环形缓冲区放不下,则返回 -1。

示例1

输入

100,4,0,1,10

输出

14

说明

capacity=100,align=4,read_index=0,write_index=1,pkt_size=10。write_index=1 不对齐,下一个对齐点是 4,从位置 4 存入 10 字节, write_index 到达位置 14。

示例2

输入

100,1,20,10,15

输出

-1

说明

capacity=100,align=1,read_index=20,write_index=10,pkt_size=15。起始位置 10 存入 15 字节,到达 25。但 25 越过了 read_index=20,返回 -1。

示例3

输入

1024,16,512,1020,100

输出

100

说明

capacity=1024,align=16,read_index=512,write_index=1020,pkt_size=100。 write_index=1020 尝试对齐到 16,下一个点是 1024。因为 1024>=capacity,起始位置回绕到 0。从 0 存入 100 字节,write_index 到达位置 100。

解题思路

核心思想

本题模拟环形缓冲区的单次写入操作,核心在于三个关键计算:

1. 计算当前可用空间(free_space)- 当write_index == read_index时,按题目规定缓冲区为空,可用空间为完整容量 - 当write_index < read_index时,写指针在读指针前方,可用空间为两者之间的区域[write_index, read_index)- 当write_index > read_index时,写指针已越过读指针,可用空间跨越缓冲区末尾:capacity - write_index + read_index

2. 对齐调整(aligned_start)- 将write_index向上取整到align的整数倍:aligned = write_index + (align - write_index % align) % align- 若对齐后超出capacity,则起始位置回绕到0,跳过的字节作为填充padding

3. 可行性判断与结果计算- 实际所需空间 = 填充字节(padding)+ 数据包大小(pkt_size) - 若所需空间 > 可用空间,说明会覆盖未读数据,返回 -1 - 否则,新写索引 =(aligned_start + pkt_size) % capacity

复杂度分析

  • 时间复杂度: O(1),仅进行若干算术运算和取模操作
  • 空间复杂度: O(1),使用常数
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/24 5:14:34

任务失败推送到飞书

import oracledb import requests import json# 配置区 请自行修改 db_host "192.168.1.100" db_port 1521 db_service "" db_user "" db_pwd ""#飞书机器人Webhook 地址 FEISHU_WEBHOOK "https://" # # 扩展后的SQ…

作者头像 李华
网站建设 2026/7/24 5:12:58

LLM与AI智能体的本质差异及技术实现

1. LLM与AI智能体的本质差异大语言模型&#xff08;LLM&#xff09;和AI智能体&#xff08;AI Agent&#xff09;虽然都属于人工智能领域&#xff0c;但它们在功能定位和技术实现上存在根本性差异。LLM本质上是基于海量文本数据训练的概率模型&#xff0c;擅长根据上下文生成连…

作者头像 李华
网站建设 2026/7/24 5:09:48

第6章_HarmonyOS 图解 Ability任务调度

第6章 HarmonyOS 图解 Ability 任务调度&#xff1a;解锁跨设备协同的核心引擎 HarmonyOS 学习系统 | 阶段二&#xff1a;进阶实战期 建议学习时长&#xff1a;1-2 周 | 前置知识&#xff1a;Ability 基础、Intent 使用 本章导读&#xff1a;在万物互联的时代&#xff0c;应用不…

作者头像 李华
网站建设 2026/7/24 5:08:53

08-ExprTk实战踩坑-string_view与签名声明

08 ExprTk 实战踩坑:string_view 生命周期、签名声明与编译顺序上一篇讲 logic.yaml 作为 DSL 的语法和 setter 语义。这一篇往下钻一层——ExprTk 这个表达式引擎本身有哪些坑,以及我们怎么绕过去的。 三个真实踩过的坑:string_view 不能 reinterpret_cast<std::string*&g…

作者头像 李华
网站建设 2026/7/24 5:07:33

企业级AI智能体架构设计与核心挑战解析

1. 企业级AI智能体的核心挑战与设计目标在构建企业级AI智能体时&#xff0c;我们首先需要理解其与传统AI应用的显著差异。企业级场景对系统的稳定性、可扩展性和安全性有着严苛要求&#xff0c;这直接决定了整个系统架构的设计方向。1.1 企业级场景的特殊性企业环境中的AI智能体…

作者头像 李华
网站建设 2026/7/24 5:04:34

YOLOv8自定义对象检测:类别过滤原理与实战应用

1. YOLOv8自定义对象检测核心思路解析YOLOv8作为当前最先进的实时目标检测框架之一&#xff0c;其自定义检测能力在实际项目中具有极高应用价值。classes参数作为模型预测阶段的类别过滤机制&#xff0c;能够显著提升检测效率并降低误检率。这个功能在以下场景中尤为重要&#…

作者头像 李华