华为OD机试真题 新系统2026-04-15 JavaGo 实现【API请求日志去重分析】

张开发
2026/4/17 23:24:37 15 分钟阅读

分享文章

华为OD机试真题 新系统2026-04-15 JavaGo 实现【API请求日志去重分析】
目录题目思路Code题目某微服务系统的日志监控平台需要分析 API调用 记录。日志中包含大量重复的请求记录为了优化存储和后续分析需要对相邻的重复请求进行合并统计。具体规则如下1.日志按时间顺序排列每条记录包含请求路径和响应时间2.如果连续出现相同的请求路径需要将这些记录合并为一条3.合并后的记录需要统计该路径连续出现的次数并保留所有响应时间的平均值4.相同路径但被其他路径分隔的视为不同的记录组,需要分别合并请实现一个函数对给定的日志数据进行去重合并处理。输入描述输入请求路径path数组按时间顺序排列输入对应的响应时间responseTimes数组(毫秒)补充0≤paths.length≤10^50≤responseTimes.length≤10^5paths.lengthresponseTimes.length1≤responseTimes[i]≤10^4路径长度不超过 100个字符输出描述按顺序输出每个记录组信息每个记录组包含以下三个元素该路径在输入数组中首次出现索引该路径连续出现的次数该组路径的平均响应时间(向下取整)示例1输入/api/user,/api/user,/api/order,/api/user,/api/order,/api/order100,200,150,300,250,350输出0,2,150 2,1,150 3,1,300 4,2,300说明/api/user在索引0-1连续出现平均响应时间为150/api/order在索引2单独出现平均响应时间为150api/user在索引3单独出现由于被分割响应时间为300/api/order在索引 4−5 连续出现 2 次平均响应时间(250350)/2300思路比较简单的题双指针可解遍历日志数组用双指针/分组的方式将连续相同路径归为一组每组记录首次出现索引、连续次数、响应时间之和输出时平均响应时间向下取整整数除法即可Codeimport java.util.*; public class Main { public static void main(String[] args) { Scanner sc new Scanner(System.in); String[] paths sc.nextLine().trim().split(,); String[] tParts sc.nextLine().trim().split(,); int n paths.length; if (n 0) return; int[] times new int[n]; for (int i 0; i n; i) times[i] Integer.parseInt(tParts[i].trim()); StringBuilder sb new StringBuilder(); int i 0; while (i n) { int start i; long total times[i]; // 将连续相同路径归为一组 while (i 1 n paths[i 1].equals(paths[start])) { i; total times[i]; } int count i - start 1; long avg total / count; if (sb.length() 0) sb.append( ); sb.append(start).append(,).append(count).append(,).append(avg); i; } System.out.println(sb); } }Gopackage main import ( bufio fmt os strconv strings ) func main() { reader : bufio.NewReader(os.Stdin) pathLine, _ : reader.ReadString(\n) timeLine, _ : reader.ReadString(\n) paths : strings.Split(strings.TrimSpace(pathLine), ,) tParts : strings.Split(strings.TrimSpace(timeLine), ,) n : len(paths) if n 0 || paths[0] { return } times : make([]int, n) for i, p : range tParts { times[i], _ strconv.Atoi(strings.TrimSpace(p)) } var parts []string i : 0 for i n { start : i total : times[i] // 将连续相同路径归为一组 for i1 n paths[i1] paths[start] { i total times[i] } count : i - start 1 avg : total / count parts append(parts, fmt.Sprintf(%d,%d,%d, start, count, avg)) i } fmt.Println(strings.Join(parts, )) }【华为od机试真题PythonJSJavaGo合集】【超值优惠】Py/JS/Java/Go合集【华为od机试真题Python】Python真题题库【华为od机试真题JavaScript】JavaScript真题题库【华为od机试真题JavaGo】JavaGo真题题库【华为od机试真题C】C真题题库【华为od机试真题C语言】C语言真题题库【华为od面试手撕代码题库】面试手撕代码题库【华为od机试面试交流群】【文章底部有二维码链接可扫码加交流群】华为OD机试:二本院校有机会吗?有机会,但不大,大神除外!机考分数越高越好,所以需要提前刷题。机考通过后,如果没有收到面试邀请,也不要着急,非目标院校面试邀请发的时间比较晚。非目标院校今年有点难,机试至少要考到350分,所以需要疯狂刷题,华为OD机考是有题库的,最好在考前完所有题库题目。华为OD机试:跨专业可以参加华为OD可以,但是如果你的本科院校比较差,上岸概率不大。华为OD机试:华为OD简历被锁定机试通过,性格测试也通过,但是没人联系面试,发现简历被锁定。此时需要主动去联系HR。让他帮助你查询原因。

更多文章