4.29华为OD机试真题 新系统 - 日志文件异常检测 (JavaPyCC++JsGo)

发布时间:2026/7/21 0:53:22
4.29华为OD机试真题 新系统 -  日志文件异常检测 (JavaPyCC++JsGo)
日志文件异常检测2026 华为OD机试真题 4月29日华为OD上机新系统考试真题 100 分题型点击查看华为 OD 机试真题完整目录2026最新华为OD机试新系统卷 双机位C卷 真题题库目录全覆盖题库 逐点算法考点详解题目描述在某系统的日志监控服务中需要实时检测日志文件中的异常模式。系统每天会产生大量日志记录每条日志记录包含一个字符串标识。异常模式定义为在同一时间段内至少出现 33 次的日志标识。请编写一个程序找出所有出现次数大于等于 33 次的日志标识并按照以下规则输出首先按照出现次数从高到低排序如果出现次数相同则按照首次出现的先后顺序排序2026 华为OD机试真题 4月29日华为OD上机新系统考试真题 100 分题型输入描述日志标识由大小写字母、数字和下划线组成长度不超过 5050日志总量[11,1000010000]输出描述输出所有出现次数大于等于 33 次的日志标识每行一个按照上述排序规则输出如果没有符合条件的日志标识则输出 NONE示例1输入[error_404,error_404,warning_500,error_404,info_200,warning_500,warning_500,info_200]输出[error_404,warning_500]说明error_404error_404 出现了 33 次数组第00、11、33个元素首次出现位置是第00个元素warning_500warning_500 出现了 33 次数组第22、55、66个元素首次出现位置是第22个元素info_200info_200 只出现了 22 次数组第44、77个元素不符合条件error_404error_404 和 warning_500warning_500 出现次数相同都是33次按照首次出现的先后顺序先输出 error_404error_404再输出 warning_500warning_500 注意虽然 info_200info_200 出现了 22 次但题目要求的是出现次数大于等于 33 次因此不输出 info_200info_200示例2输入[test_case,test_case,test_case2,test_case2,test_case2]输出[test_case2]说明test_casetest_case出现了 22 次不符合条件test_case2test_case2 出现了 33 次首次出现位置是数组第33个元素只输出 test_case2testcase2 注意test_casetestcase虽然出现次数较多但只有 22 次不满足大于等于 33 次的条件解题思路核心思想本题要求从一组日志标识中找出出现次数大于等于 3 次的标识并按照特定规则排序。统计频率与首次出现位置 - 使用一个哈希表Map来记录每个日志标识出现的次数。 - 使用另一个哈希表来记录每个日志标识在原始数组中首次出现的索引。筛选异常标识 - 遍历频率统计表将出现次数 $\ge 3$ 的标识提取出来。自定义排序 - 规则 1按出现次数从高到低排序降序。 - 规则 2若次数相同按首次出现的先后顺序排序索引升序。输出处理 - 若没有符合条件的标识输出 NONE。 - 否则按排序后的顺序输出标识。复杂度分析时间复杂度$O(N \log K)$ 或 $O(N K \log K)$其中 $N$ 是日志总数$K$ 是满足条件的异常日志种类数。统计频率需要 $O(N)$排序需要 $O(K \log K)$。空间复杂度$O(N)$需要哈希表存储所有日志标识的频率和首次出现