AlgoMooc
你已开通华为OD训练营权益,还差最后一步——完成入营激活(兑换课程 + 加飞书 + 登记服务群),即可解锁全部课程与专属服务。去激活 →
← 返回题库

N0006. 0415-API请求日志去重分析

中等通过率 35% · 提交 91 · 通过 32
滑动窗口模拟字符串数学不定滑窗

小慕在开发一个微服务日志监控平台时,需要分析API调用记录。日志中包含大量重复的请求记录,为了优化存储和后续分析,小慕决定对相邻的重复请求进行合并统计。 1. 日志按时间顺序排列,每条记录包含「请求路径」和「响应时间」。 2. 若,需将这些记录合并为一条。 3. 合并后需统计该路径的连续出现次数;并保留所有响应时间的平均值()。 4. 若相同路径被其他路径分隔,视为不同记录组,需分别合并。 请帮助小慕实现一个函数,对给定的日志数据进行去重合并处理。

提示:带虚线的词点一下有通俗解释。

输入描述

String[] paths:请求路径数组(按时间顺序排列); int[] responseTimes:对应的响应时间数组(毫秒)。

输出描述

返回一个二维数组 int[][],每个子数组包含3个元素: - [0]:该路径在输入数组中的首次出现索引; - [1]:该路径的连续出现次数; - [2]:该组路径的平均响应时间(向下取整)。

示例

示例 1

输入

6
/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

说明:- /api/user 在索引 0-1 连续出现2次,平均响应时间:(100+200)/2 = 150 - /api/order 在索引 2 单独出现1次,响应时间:150 - /api/user 在索引 3 单独出现1次(与前面的 /api/order 分隔),响应时间:300 - /api/order 在索引 4-5 连续出现2次,平均响应时间:(250+350)/2 = 300

示例 2

输入

4
/api/login /api/login /api/login /api/login
50 60 70 80

输出

0 4 65

说明:边界情况 - 全部相同。所有API均为 /api/login,连续出现4次,平均响应时间:(50+60+70+80)/4 = 65

示例 3

输入

3
/api/a /api/b /api/c
100 200 300

输出

0 1 100
1 1 200
2 1 300

说明:边界情况 - 全部不同。每个API路径单独成组。

时间限制 1000 ms · 内存限制 128 MB

看不懂题目?点开图解
相邻重复请求合并示例 输入 paths: /api/user /api/user /api/order /api/user /api/order /api/order 0 1 2 3 4 5 输出分组: 组1: /api/user 首次索引:0 次数:2 平均:150 组2 索引:2 次数:1 平均:150 组3 索引:3 次数:1 平均:300 组4: /api/order 首次索引:4 次数:2 平均:300 合并规则:相邻且路径相同才合并,被其他路径隔开则另起一组。 平均响应时间 = 组内所有响应时间之和 ÷ 次数,再向下取整。 /api/user /api/order
写完代码点「提交」,将对全部测试用例判题。

向老师提问

针对「0415-API请求日志去重分析」把疑问、代码和报错填清楚,老师收到后能更快、更准地回复你。