华为上机试题及详细答案.docxVIP

  • 0
  • 0
  • 约7.97千字
  • 约 9页
  • 2026-05-09 发布于河北
  • 举报

华为上机试题及详细答案

第一题(100分):端口流量统计(单调栈考点)

题目描述

现有一组端口流量数据,以数组形式给出,每个元素表示对应时刻的端口流量值。请计算每个时刻的流量值,是其后第一个大于该流量值的时刻与当前时刻的时间差;若不存在其后大于该流量值的时刻,时间差记为0。输出一个与输入数组长度相同的数组,对应每个时刻的时间差。

示例:

输入:[3,1,4,2,5]

输出:[2,1,2,1,0]

解释:

时刻0(流量3):其后第一个大于3的是时刻2(流量4),时间差2;

时刻1(流量1):其后第一个大于1的是时刻2(流量4),时间差1;

时刻2(流量4):其后第一个大于4的是时刻4(流量5),时间差2;

时刻3(流量2):其后第一个大于2的是时刻4(流量5),时间差1;

时刻4(流量5):无后续大于其的流量,时间差0。

解题思路

核心考点:单调栈(单调递减栈),用于高效找到每个元素后续第一个更大元素的位置,避免暴力遍历(暴力遍历时间复杂度O(n2),单调栈可优化至O(n))。

步骤:

1.初始化一个空栈,栈中存储数组的索引(而非值),用于记录未找到后续更大元素的时刻;

2.遍历数组,对于当前时刻i:

①若栈不为空,且当前流量值大于栈顶索引对应的流量值,说明找到栈顶索引的后续第一个更大元素,计算时间差(i-栈顶索引),存入结果数组,弹出栈顶;

文档评论(0)

1亿VIP精品文档

相关文档