标签:tco counter 没有 str int ems 问题: ber memset
过于追求完美,可能什么都得不到。前面几次由于没解决所有的四道题,已经错过了好几周的总结了。与其什么都没有,还不如做多少写多少。
问题: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;
}
};
标签:tco counter 没有 str int ems 问题: ber memset
原文地址:https://www.cnblogs.com/youdias/p/9903417.html