某系统开放了多个 Test 接口供第三方系统调用,同时记录了这些接口的调用信息。存放于日志 invokes 中,invoke 引号 [time,interfaceId],表示在时刻 time,接口 interfaceId 被调用了一次。
检查时间窗口长度 timeSegment 。对于某接口,若存在一个时间窗口 [t,t+timeSegment),其被调用的次数不少于 minLimits 次,则称该接口为高频接口。
请你根据这份日志统计出所有高频接口,并按此按钮:若没有,则为空列表 [ ]。
本题使用核心代码模式
某系统开放了多个 Test 接口供第三方系统调用,同时记录了这些接口的调用信息。存放于日志 invokes 中,invoke 引号 [time,interfaceId],表示在时刻 time,接口 interfaceId 被调用了一次。
检查时间窗口长度 timeSegment 。对于某接口,若存在一个时间窗口 [t,t+timeSegment),其被调用的次数不少于 minLimits 次,则称该接口为高频接口。
请你根据这份日志统计出所有高频接口,并按此按钮:若没有,则为空列表 [ ]。
第一个参数是 invokes,1<=invokes.length<=105, 0<=time<=106 ,0<=interfaceId<=105 ,time 递增。
第二个参数是 timeSegment,1<=timeSegment<=105
第三个参数是 minLimits,1<=minLimits<=invokes.length。
全部高频接口的升序列表,可能为空列表 [ ] 。
输入
[0, 1],[0, 10],[9, 1],[10, 10],[20, 3],[25, 3],[100, 3],[100, 3]
10
2
输出
[1, 3]
说明
共有 3 个接口,分别为 1、3、10。
接口 1 :在时间窗口 [0,0+10)被调用了两次,分别为时刻 0 和 9 ,满足高频接口条件。
接口 3 :在时间窗口 [100,100+10) 被调用了两次,满足高频接口条件。还存在其它时间窗口满足高频接口条件,如时间窗口 [19,29] 。
接口 10 :被调用了两次,分别为时刻 0 和 10 ,超出了时间窗口,不满足高频接口条件。
'''
class InvokeInfo:
def __init__(self, interface_id: int, time: int):
self.interface_id = interface_id
self.time = time
'''
from typing import List
from invoke_info import InvokeInfo
def get_interfaces(invokes: List[InvokeInfo], time_segment: int, min_limits: int) -> List[int]:
/*
public class InvokeInfo {
int interfaceId;
int time;
public InvokeInfo(int interfaceId, int time) {
this.interfaceId = interfaceId;
this.time = time;
}
}
*/
import java.util.*;
class Solution {
public List<Integer> getInterfaces(List<InvokeInfo> invokes, int timeSegment, int minLimits) {
}
}
/*
struct InvokeInfo {
int interfaceId;
int time;
InvokeInfo(int id, int t)
: interfaceId(id), time(t) {}
};
*/
#include<bits/stdc++.h>
#include "InvokeInfo.h"
using namespace std;
class Solution {
public:
vector<int> getInterfaces(vector<InvokeInfo>& invokes, int timeSegment, int minLimits) {
}
};