美文网首页
【算法题】2747. 统计没有收到请求的服务器数目

【算法题】2747. 统计没有收到请求的服务器数目

作者: 程序员小2 | 来源:发表于2023-07-05 21:59 被阅读0次

题目:

给你一个整数 n ,表示服务器的总数目,再给你一个下标从 0 开始的 二维 整数数组 logs ,其中 logs[i] = [server_id, time] 表示 id 为 server_id 的服务器在 time 时收到了一个请求。

同时给你一个整数 x 和一个下标从 0 开始的整数数组 queries 。

请你返回一个长度等于 queries.length 的数组 arr ,其中 arr[i] 表示在时间区间 [queries[i] - x, queries[i]] 内没有收到请求的服务器数目。

注意时间区间是个闭区间。

示例 1:

输入:n = 3, logs = [[1,3],[2,6],[1,5]], x = 5, queries = [10,11]
输出:[1,2]
解释:
对于 queries[0]:id 为 1 和 2 的服务器在区间 [5, 10] 内收到了请求,所以只有服务器 3 没有收到请求。
对于 queries[1]:id 为 2 的服务器在区间 [6,11] 内收到了请求,所以 id 为 1 和 3 的服务器在这个时间段内没有收到请求。
示例 2:

输入:n = 3, logs = [[2,4],[2,1],[1,2],[3,1]], x = 2, queries = [3,4]
输出:[0,1]
解释:
对于 queries[0]:区间 [1, 3] 内所有服务器都收到了请求。
对于 queries[1]:只有 id 为 3 的服务器在区间 [2,4] 内没有收到请求。

java代码:

class Solution {
    public int[] countServers(int n, int[][] logs, int x, int[] queries) {
        int nq = queries.length;
        var id = new Integer[nq];
        for (int i = 0; i < nq; i++) id[i] = i;
        Arrays.sort(id, (i, j) -> queries[i] - queries[j]);
        Arrays.sort(logs, (a, b) -> a[1] - b[1]); // 按照 time 排序

        int[] ans = new int[nq], cnt = new int[n + 1];
        int outOfRange = n, left = 0, right = 0;
        for (int i : id) {
            while (right < logs.length && logs[right][1] <= queries[i]) // 进入窗口
                if (cnt[logs[right++][0]]++ == 0)
                    outOfRange--;
            while (left < logs.length && logs[left][1] < queries[i] - x) // 离开窗口
                if (--cnt[logs[left++][0]] == 0)
                    outOfRange++;
            ans[i] = outOfRange;
        }
        return ans;
    }
}

相关文章

  • Servlet与SpringMVC运行流程

    整体流程(针对Servlet的请求): -->客户发出请求 -->Web服务器收到请求 -->Web服务器转交请求...

  • 知道HTTPS的⼯作原理吗?

    1. ⽤户通过浏览器请求https⽹站,服务器收到请求,选择浏览器⽀持的加密和hash算法,同时返回数字证书给浏览...

  • 【算法题】1828. 统计一个圆中点的数目

    插: 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站。[http...

  • HTTP常见状态

    1xx: 信息 消息:描述: 100 Continue服务器仅接收到部分请求,但是一旦服务器并没有拒绝该请求,客户...

  • HTTP错误提示信息表

    1xx: 信息 消息:描述: 100 Continue 服务器仅接收到部分请求,但是一旦服务器并没有拒绝该请求,客...

  • python学习科普--http返回状态

    一、状态1××:信息 100 Continue:服务器仅接收到部分请求,但是一旦服务器并没有拒绝该请求,客户端应该...

  • http状态码

    1.xx 信息100 Continue 服务器仅接收到部分请求,但是一旦服务器并没有拒绝该请求,客户端应该继...

  • JavaWeb(第九周)

    day10 一、response和request 服务器处理请求的流程 服务器每次收到请求时,都会为这个请求开辟一...

  • 服务器处理请求

    request和response都是服务器创建的对象参考文章Http协议 服务器处理请求流程服务器每次收到请求时,...

  • Http状态码

    1.1 状态码1xx 100 Continue:服务器仅接收到部分请求,但是一旦服务器并没有拒绝该请求,客户端应该...

网友评论

      本文标题:【算法题】2747. 统计没有收到请求的服务器数目

      本文链接:https://www.haomeiwen.com/subject/kmicudtx.html