leetcode933:最近的请求次数
-
题目:
-
写一个 RecentCounter 类来计算特定时间范围内最近的请求。
请你实现 RecentCounter 类:
RecentCounter() 初始化计数器,请求数为 0 。
int ping(int t) 在时间 t 添加一个新请求,其中 t 表示以毫秒为单位的某个时间,并返回过去 3000 毫秒内发生的所有请求数(包括新请求)。确切地说,返回在 [t-3000, t] 内发生的请求数。
保证 每次对 ping 的调用都使用比之前更大的 t 值。
-
-
代码如下:
class RecentCounter {
ArrayList<Integer> requests;
public RecentCounter() {
requests = new ArrayList<>();
}
public int ping(int t) {
requests.add(t);
int pre = binatryLeft(requests,t-3000);
return requests.size() - pre;
}
int binatryLeft(ArrayList<Integer> requests,int t){
int left = 0;
int right = requests.size();
while(left < right){
int mid = left + (right - left)/2;
if( requests.get(mid) >= t ){
right = mid;
}else{
left = mid+1;
}
}
return left;
}
}
/**
* Your RecentCounter object will be instantiated and called as such:
* RecentCounter obj = new RecentCounter();
* int param_1 = obj.ping(t);
*/