news 2026/7/24 2:33:01

5.13华为OD机试真题 新系统 - 数据包优先级窗口查找 (JavaPyCC++JsGo)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
5.13华为OD机试真题 新系统 - 数据包优先级窗口查找 (JavaPyCC++JsGo)

数据包优先级窗口查找

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

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

题目描述

给定 n 个数据包,每个数据包包含 id 和 priority。维护一个大小为 k 的滑动窗口,对于每个窗口,找出窗口内每个数据包右边第一个 priority 更高的数据包 id。

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

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

输入描述

  • n: 数据包数量 (1≤n≤106)
  • k: 窗口大小 (1≤k≤100)
  • packets: 数据包内容,长度为 n 的数组,每个元素格式为 id:priority

数据包格式:

  • 格式: \ :\
  • id: 唯一标识符 (1≤id≤109)
  • priority: 优先级 (1≤priority≤109),数值越大优先级越高

处理规则:

  • 窗口滑动: 从左到右滑动,每次窗口包含 k 个连续数据包

  • 每个窗口的处理:

  • 向右查找第一个 priority 更高的数据包

  • 找到 → 记录该数据包的 id
  • 未找到 → 不记录

  • 跳过条件: 数据包不足以构成完整窗口 (窗口大小 k> 数据包总数 n) → 跳过该窗口 窗口内未找到任何 priority 更高的数据包 → 跳过该窗口

输出描述

输出所有未跳过窗口的结果序列,每个序列包含该窗口内找到的所有"下一个更高优先级数据包 id"

示例1

输入

5,3,[[1,5],[2,3],[3,7],[4,6],[5,4]]

输出

[[3,3],[3]]

说明

窗口 [0,2]: 数据包为 [1:5,2:3,3:7]

1:5 后面第一个优先级更高的是 3:7,输出 3

2:3 后面第一个优先级更高的是 3:7,输出 3

3:7 后面没有优先级更高的,不输出

该窗口输出: 3 3

窗口 [1,3]: 数据包为 [2:3,3:7,4:6]

2:3 后面第一个优先级更高的是 3:7,输出 3

3:7 后面没有优先级更高的,不输出

4:6 后面没有优先级更高的,不输出

该窗口输出: 3

窗口 [2,4]: 数据包为 [3:7,4:6,5:4]

3:7 后面没有优先级更高的,不输出

4:6 后面没有优先级更高的,不输出

5:4 后面没有优先级更高的,不输出

该窗口无输出

示例2

输入

4,3,[[1,1],[2,2],[3,3],[4,4]]

输出

[[2,3],[3,4]]

说明

窗口 [0,2]: 数据包为 [1:1,2:2,3:3]

1:1 后面第一个优先级更高的是 2:2,输出 2

2:2 后面第一个优先级更高的是 3:3,输出 3

3:3 后面没有优先级更高的,不输出

输出: 2 3

窗口 [1,3]: 数据包为 [2:2,3:3,4:4]

2:2 后面第一个优先级更高的是 3:3,输出 3

3:3 后面第一个优先级更高的是 4:4,输出 4

4:4 后面没有优先级更高的,不输出

输出: 3 4

示例3

输入

4,3,[[4,4],[3,3],[2,2],[1,1]]

输出

[]

说明

窗口 [0,2]: 数据包为 [4:4,3:3,2:2]

4:4 后面没有优先级更高的,不输出

3:3 后面没有优先级更高的,不输出

2:2 后面没有优先级更高的,不输出

该窗口不输出

窗口 [1,3]: 数据包为 [3:3,2:2,1:1]

3:3 后面没有优先级更高的,不输出

2:2 后面没有优先级更高的,不输出

1:1 后面没有优先级更高的,不输出

该窗口不输出

所有窗口均无输出,最终结果输出 []

示例4

输入

3,4,[[1,5],[2,3],[3,7]]

输出

[]

说明

窗口大小 4> 数据包数量 3,窗口无输出,最终结果输出 []

解题思路

核心思想

本题要求在一个大小为 $k$ 的滑动窗口中,找出每个数据包右边(且在窗口内)的第一个优先级(priority)更高的数据包的id

  1. 预处理“下一个更高优先级”: - 这是一个典型的单调栈 (Monotonic Stack)应用场景。 - 我们可以利用单调递减栈,在 $O(n)$ 的时间内预处理出一个数组next_greater,其中next_greater[i]存储的是数据包 $i$ 右侧第一个优先级更高的数据包的索引。如果右侧没有更高优先级的,则记为-1。 -单调栈逻辑:遍历数据包时,如果当前数据包的优先级大于栈顶元素所对应数据包的优先级,说明当前数据包就是栈顶元素右侧第一个更大的元素。将栈顶弹出并记录,直到栈为空或栈顶优先级大于等于当前优先级,然后将当前元素的索引入栈。

  2. 滑动窗口扫描: - 窗口大小为 $k$。如果 $k > n$ 或 $k \le 0$,说明无法形成完整的窗口,直接返回空结果。 - 共有 $n - k + 1$ 个窗口。对于每一个起点start,窗口的范围是[start, end](其中end = start + k - 1)。 - 遍历当前窗口内的每一个位置i,检查它预处理好的next_greater[i]。 -有效性判断:如果next_greater[i]存在(即不为-1),且这个“下一个更大”的位置仍然在当前窗口范围内(即next_greater[i] <= end),那么我们就找到了符合条件的数据包,将其id加入当前窗口的结果列表。 - 如果一个窗口内找到了至少一个符合条件的id,则将该窗口的结果集保存。否则,跳过该窗口。

复杂度分析

  • 时间复杂度
  • 单调栈预处理next_greater:每个元素最多入栈一次,出栈一次,时间复杂度为 $O(n)$。
  • 滑动窗口遍历:共有 $n - k + 1$ 个窗口,每个窗口遍历 $k$ 个元素,总耗时约为 $O((n - k) \times k) \approx O(n \cdot k)$。
  • 总体时间复杂度为 $O(n \cdot k)$。鉴于 $k \le 100$,$n \le 10^6$,最大操作次数约为 $10^8$,在常规机试时间限制内可以高效通过。
  • 空间复杂度
  • 需要存储idspriorities数组,大小为 $O(n)$。
  • 需要单调栈stack和结果数组next_greater,大小为 $O(n)$。
  • 总体空间复杂度为 $O(n
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/24 2:29:42

HarmonyOS掌上记账APP开发实践第77篇:平板适配 — 宽屏设备上的布局优化与交互增强

平板适配 — 宽屏设备上的布局优化与交互增强 在这里插入图片描述 文章简介 平板设备的大屏幕为应用提供了更广阔的展示空间&#xff0c;但也带来了布局适配的挑战——简单拉伸手机 UI 在大屏幕上会产生空白过多、行宽过长、交互不便等问题。MoneyTrack 通过最大宽度约束&#…

作者头像 李华
网站建设 2026/7/24 2:29:39

PazaBench:非洲语言ASR基准测试框架的技术解析与实践指南

1. 背景与核心概念自动语音识别&#xff08;ASR&#xff09;技术作为人工智能领域的重要分支&#xff0c;近年来在语音助手、实时字幕、语音搜索等场景中广泛应用。然而&#xff0c;当前主流ASR系统的性能评估多集中于英语、中文等资源丰富语言&#xff0c;对非洲语言等低资源语…

作者头像 李华
网站建设 2026/7/24 2:28:59

WiFi-LLM:在ESP32上实现大语言模型流式传输与边缘推理

1. 先搞清楚 WiFi-LLM 到底解决什么问题看到 WiFi-LLM 这个标题&#xff0c;很多人第一反应可能是“用 WiFi 传输大模型”或者“在无线环境下运行 LLM”。但实际它解决的是一个更具体的问题&#xff1a;如何在资源极度受限的嵌入式设备&#xff08;比如 ESP32&#xff09;上&am…

作者头像 李华
网站建设 2026/7/24 2:27:05

Substack推出AI检测工具:识别Claudefishing与AI生成内容

Substack 近期正式推出了 AI 检测工具&#xff0c;旨在帮助平台用户识别以“Claudefishing”为代表的 AI 生成内容。这类内容通常模仿真实作者的写作风格或身份&#xff0c;诱导读者误认为是人工创作&#xff0c;对内容可信度构成潜在威胁。该工具面向 Substack 作者和读者开放…

作者头像 李华
网站建设 2026/7/24 2:25:45

大模型智能体评估:从功能验证到可信测试

1. 大模型智能体评估的现状与挑战在人工智能领域&#xff0c;大模型智能体正从实验室走向实际应用&#xff0c;但评估这些智能体的表现却面临诸多挑战。传统NLP任务中&#xff0c;我们有BLEU、ROUGE等明确指标&#xff0c;但智能体的评估要复杂得多——它们不仅要生成文本&…

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

PG成为Vibe Coding的首选搭配:AI Agent开发的“大道至简“

本文整理于 HOW 2026 演讲内容&#xff0c;演讲者&#xff1a;萧少聪&#xff0c;前 PostgreSQL 分会会长及中文社区主席、IvorySQL 专家顾问委员。 过去的两年里&#xff0c;我一直坚信一个判断&#xff1a;在我们现在用 AI 方法、用大语言模型进行开发的模式下&#xff0c;Po…

作者头像 李华