import java.util.*; public class LogAnalyzerService { // 方法:分析日志并回答查询 public List analyzeLogs(int[][] logData, int x, int[] queries) { // 用于记录每个服务器最后一次请求的时间 Map lastRequestTime = new HashMap<>(); // 遍历日志数据,更新每个服务器的最后一次请求时间 for (int[] logEntry : logData) { int serverId = logEntry[0]; int time = logEntry[1]; lastRequestTime.put(serverId, Math.max(lastRequestTime.getOrDefault(serverId, 0), time)); } // 存储查询结果的列表 List results = new ArrayList<>(); // 遍历每个查询 for (int queryTime : queries) { int startTime = queryTime - x; int inactiveServersCount = 0; // 检查每个服务器在查询的时间区间内是否有请求 for (int serverId = 1; serverId <= lastRequestTime.size(); serverId++) { if (!lastRequestTime.containsKey(serverId) || lastRequestTime.get(serverId) < startTime) { // 服务器不存在或最后请求时间在查询区间之前,视为不活跃 inactiveServersCount++; } } // 将不活跃服务器的数量添加到结果列表中 results.add(inactiveServersCount); } return results; } public static void main(String[] args) { // 示例日志数据 int[][] logData = { {1, 1}, {2, 3}, {3, 5}, {1, 6}, {2, 8} }; int x = 2; // 时间窗口 int[] queries = {5, 7, 9}; // 查询时间点 LogAnalyzerService service = new LogAnalyzerService(); List results = service.analyzeLogs(logData, x, queries); // 输出查询结果 for (int i = 0; i < queries.length; i++) { System.out.println("For query at time " + queries[i] + ", number of inactive servers: " + results.get(i)); } } }