Leetcode 362 Solution
This article provides solution to leetcode question 362 (design-hit-counter)
Access this page by simply typing in "lcs 362" in your browser address bar if you have bunnylol configured.
Leetcode Question Link
https://leetcode.com/problems/design-hit-counter
Solution
class HitCounter {
map<int, int> counts;
int total;
public:
/** Initialize your data structure here. */
HitCounter() {
total = 0;
}
void expire(int timestamp)
{
while (counts.empty() == false && timestamp >= counts.begin()->first + 300)
{
total -= counts.begin()->second;
counts.erase(counts.begin());
}
}
/** Record a hit.
@param timestamp - The current timestamp (in seconds granularity). */
void hit(int timestamp) {
total++;
counts[timestamp]++;
expire(timestamp);
}
/** Return the number of hits in the past 5 minutes.
@param timestamp - The current timestamp (in seconds granularity). */
int getHits(int timestamp) {
expire(timestamp);
return total;
}
};
/**
* Your HitCounter object will be instantiated and called as such:
* HitCounter obj = new HitCounter();
* obj.hit(timestamp);
* int param_2 = obj.getHits(timestamp);
*/