API请求日志去重分析
2026 华为OD机试真题 4月15日华为OD上机新系统考试真题 100 分题型
点击查看华为 OD 机试真题完整目录:2026最新华为OD机试新系统卷 + 双机位C卷 真题题库目录|全覆盖题库 + 逐点算法考点详解
题目描述
某微服务系统的日志监控平台需要分析API调用记录。日志中包含大量重复的请求记录,为了优化存储和后续分析,需要对相邻的重复请求进行合并统计。
具体规则如下:
1.日志按时间顺序排列,每条记录包含请求路径和响应时间
2.如果连续出现相同的请求路径,需要将这些记录合并为一条
3.合并后的记录需要统计该路径连续出现的次数,并保留所有响应时间的平均值
4.相同路径但被其他路径分隔的,视为不同的记录组,需要分别合并
请实现一个函数,对给定的日志数据进行去重合并处理。
输入描述
输入请求路径path数组,按时间顺序排列
输入对应的响应时间responseTimes数组(毫秒)
补充
0≤paths.length≤10^50≤responseTimes.length≤10^5paths.length==responseTimes.length1≤responseTimes[i]≤10^4- 路径长度不超过 100个字符
输出描述
按顺序输出每个记录组信息,每个记录组包含以下三个元素
- 该路径在输入数组中首次出现索引
- 该路径连续出现的次数
- 该组路径的平均响应时间(向下取整)
示例1
输入
/api/user,/api/user,/api/order,/api/user,/api/order,/api/order
100,200,150,300,250,350
输出
0,2,150 2,1,150 3,1,300 4,2,300
说明
pi/user在索引0-1连续出现,平均响应时间为150
/api/order在索引2单独出现,平均响应时间为150
api/user在索引3单独出现,由于被分割,响应时间为300
/api/order在索引 4−5 连续出现 2 次,平均响应时间:(250+350)/2=300
解题思路
核心思想
本题本质上是一个游程编码(Run-Length Encoding)或者双指针问题。 由于题目要求对相邻的相同请求路径进行合并,我们只需要遍历路径数组,并使用指针来寻找连续相同的路径段。
- 遍历数组,对于当前路径,记录其起始索引
i。 - 继续向后查找,直到遇到与当前路径不同的路径,或者到达数组末尾,假设此时索引为
j。 - 那么从
i到j-1就是一段连续的相同路径。这段路径的连续出现次数为j - i。 - 计算这段路径的总响应时间,并求平均值(向下取整,即整数除法)。
- 将合并后的记录(起始索引、出现次数、平均响应时间)格式化输出。
- 将当前索引更新为
j,继续下一段的查找。
复杂度分析
- 时间复杂度: ,其中 为路径数组的长度。虽然有嵌套循环,但每个元素最多被访问一次,总的时间复杂度是线性的。
- 空间复杂度: ,用于存储结果字符串或结果列表。