LeetCode933
Posted youdias
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LeetCode933相关的知识,希望对你有一定的参考价值。
过于追求完美,可能什么都得不到。前面几次由于没解决所有的四道题,已经错过了好几周的总结了。与其什么都没有,还不如做多少写多少。
问题:933. 最近的请求次数
写一个 RecentCounter
类来计算最近的请求。
它只有一个方法:ping(int t)
,其中 t
代表以毫秒为单位的某个时间。
返回从 3000 毫秒前到现在的 ping
数。
任何处于 [t - 3000, t]
时间范围之内的 ping
都将会被计算在内,包括当前(指 t
时刻)的 ping
。
保证每次对 ping
的调用都使用比之前更大的 t
值。
链接:https://leetcode-cn.com/contest/weekly-contest-109/problems/number-of-recent-calls/
分析:
维护一个队列,,得到新值后根据条件刷新。最终返回大小即可。STL中vector比较熟,用这个存储数据。
AC Code:
class RecentCounter { public: vector<int> Pings; RecentCounter() { this->Pings.clear(); } int ping(int t) { if (this->Pings.size() == 0) { this->Pings.emplace_back(t); } else { this->Pings.emplace_back(t); while (this->Pings[0]+3000<t) { this->Pings.erase(this->Pings.begin()); } } return this->Pings.size(); } }; /** * Your RecentCounter object will be instantiated and called as such: * RecentCounter* obj = new RecentCounter(); * int param_1 = obj->ping(t); */
其他:
第一code:
typedef long long ll; typedef vector<int> VI; typedef pair<int,int> PII; #define REP(i,s,t) for(int i=(s);i<(t);i++) #define FILL(x,v) memset(x,v,sizeof(x)) const int INF = (int)1E9; #define MAXN 100005 class RecentCounter { public: VI pings; int h; RecentCounter() { h = 0; pings.clear(); } int ping(int t) { pings.push_back(t); while (h < pings.size() && pings[h] < t - 3000) h++; return (int)pings.size() - h; } };
以上是关于LeetCode933的主要内容,如果未能解决你的问题,请参考以下文章
LeetCode --- 933. Number of Recent Calls 解题报告
LeetCode.933-最近通话次数(Number of Recent Calls)
leetcode 933. Number of Recent Calls
[LeetCode] 933. Number of Recent Calls 最近的调用次数