Leetcode 1470 Solution
This article provides solution to leetcode question 1470 (tweet-counts-per-frequency)
Access this page by simply typing in "lcs 1470" in your browser address bar if you have bunnylol configured.
Leetcode Question Link
https://leetcode.com/problems/tweet-counts-per-frequency
Solution
class TweetCounts {
map<std::string, map<int, int>> tweets;
public:
TweetCounts() {
}
void recordTweet(string tweetName, int time) {
tweets[tweetName][time] += 1;
}
vector<int> getTweetCountsPerFrequency(string freq, string tweetName, int startTime, int endTime) {
auto& tweetsForName = tweets[tweetName];
int seclen = 0;
if (freq == "minute")
seclen = 60;
else if (freq == "hour")
seclen = 3600;
else if (freq == "day")
seclen = 86400;
int sec_start_time = startTime;
int sec_cnt = 0;
vector<int> ans;
for (auto it = tweetsForName.lower_bound(startTime); it != tweetsForName.end(); it++)
{
if (it->first > endTime)
break;
while (it->first >= sec_start_time + seclen)
{
ans.push_back(sec_cnt);
sec_start_time += seclen;
sec_cnt = 0;
}
sec_cnt += it->second;
}
while (sec_start_time <= endTime)
{
ans.push_back(sec_cnt);
sec_start_time += seclen;
sec_cnt = 0;
}
return ans;
}
};
/**
* Your TweetCounts object will be instantiated and called as such:
* TweetCounts* obj = new TweetCounts();
* obj->recordTweet(tweetName,time);
* vector<int> param_2 = obj->getTweetCountsPerFrequency(freq,tweetName,startTime,endTime);
*/