目录
题目:
示例:
分析:
代码+运行结果:
题目:
示例:
分析:
首先这是LeetCode75里第一道设计类的题目,这种类型的题目会比较新颖,就是按照题目要求来设计一个类。然后测试用例是模拟真实调用类的成员函数的。
这道题也算是简单题,整个类除了构造函数以外就一个成员函数,测试用例也就只调用这一个函数。
在调用函数的时候会连同带一个参数,表示当前请求的时间,然后要返回当前这个时间的3000秒内的请求次数。
那么我们就可以拿一个容器来存放请求时间,然后在调用ping这个函数时候,我们可以在容器里寻找比当前请求时间小3000以内的请求时间数量,然后返回出去。
但是题目有保证说每次请求的时间都会比之前的请求时间更大,因此我们存放请求时间的这个容器内部,是一个递增的状态,因此如果我们发现一个容器里的一个请求时间比当前的请求时间小,并且差值大于3000了,我们就可以直接把这个请求时间从容器里删除了。因为后面的请求时间都会比现在的请求时间更大,就更用不到这个较小的请求时间了。
所以我们可以使用双端队列来存放请求时间,每次添加请求时间都放在队尾,然后发现队头与当前请求时间的差值大于3000的时候,就可以把队头删除。最后返回双端队列的长度即可。文章来源:https://www.toymoban.com/news/detail-644338.html
代码+运行结果:
class RecentCounter {
public:
deque<int>count;
RecentCounter() {
}
int ping(int t) {
count.push_back(t);
while(count.front()<t-3000) count.pop_front();
return count.size();
}
};
文章来源地址https://www.toymoban.com/news/detail-644338.html
到了这里,关于【LeetCode75】第二十七题(933)最近的请求次数的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!