Leetcode 362 Solution

This article provides solution to leetcode question 362 (design-hit-counter)

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); */