题目要求我们对日志中的请求路径进行“按相邻段分组”的处理。
需要特别注意两点:
某微服务系统的日志监控平台需要分析 API 调用记录。日志中包含大量重复的请求记录,为了优化存储和后续分析,需要对相邻的重复请求进行合并统计。
具体规则如下:
1.日志按时间顺序排列,每条记录包含请求路径和响应时间
2.如果连续出现相同的请求路径,需要将这些记录合并为一条
3.合并后的记录需要统计该路径连续出现的次数,并保留所有响应时间的平均值
4.相同路径但被其他路径分隔的,视为不同的记录组,需要分别合并
请实现一个函数,对给定的日志数据进行去重合并处理。
-String[]paths:请求路径数组,按时间顺序排列
-int[]responseTimes:对应的响应时间数组(毫秒)
-返回一个二维数组 int,每个子数组包含三个元素:
-[0]:该路径在输入数组中的首次出现索引
-[1]:该路径连续出现的次数
-[2]:该组路径的平均响应时间(向下取整)
数据规模:
0≤paths.length≤105
0≤responseTimes.length≤105
paths.length==responseTimes.length
1≤responseTimes[i]≤104
路径长度不超过 100 个字符
输入
["/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