国外 设计公司手机网站,想要网站导航推广页,新闻采编与制作专业简历,高端网站建设的方案1. 题目
请你实现一个能够支持以下两种方法的推文计数类 TweetCounts#xff1a;
recordTweet(string tweetName, int time)
记录推文发布情况#xff1a;用户 tweetName 在 time#xff08;以 秒 为单位#xff09;时刻发布了一条推文。
getTweetCountsPerFrequency(s…1. 题目
请你实现一个能够支持以下两种方法的推文计数类 TweetCounts
recordTweet(string tweetName, int time)
记录推文发布情况用户 tweetName 在 time以 秒 为单位时刻发布了一条推文。
getTweetCountsPerFrequency(string freq, string tweetName, int startTime, int endTime)
返回从开始时间 startTime以 秒 为单位到结束时间 endTime以 秒 为单位内每 分 minute时 hour 或者 日 day 取决于 freq内指定用户 tweetName 发布的推文总数。freq 的值始终为 分 minute时 hour 或者 日 day 之一表示获取指定用户 tweetName 发布推文次数的时间间隔。第一个时间间隔始终从 startTime 开始因此时间间隔为 [startTime, startTime delta*1, [startTime delta*1, startTime delta*2, [startTime delta*2, startTime delta*3, ... , [startTime delta*i, min(startTime delta*(i1), endTime 1)其中 i 和 delta取决于 freq都是非负整数。
示例
输入
[TweetCounts,recordTweet,recordTweet,recordTweet,getTweetCountsPerFrequency,getTweetCountsPerFrequency,recordTweet,getTweetCountsPerFrequency]
[[],[tweet3,0],[tweet3,60],[tweet3,10],[minute,tweet3,0,59],[minute,tweet3,0,60],[tweet3,120],[hour,tweet3,0,210]]输出
[null,null,null,null,[2],[2,1],null,[4]]解释
TweetCounts tweetCounts new TweetCounts();
tweetCounts.recordTweet(tweet3, 0);
tweetCounts.recordTweet(tweet3, 60);
tweetCounts.recordTweet(tweet3, 10);
// tweet3 发布推文的时间分别是 0, 10 和 60 。
tweetCounts.getTweetCountsPerFrequency(minute, tweet3, 0, 59);// 返回 [2]。统计频率是每分钟60 秒因此只有一个有效时间间隔 [0,60 - 2 条推文。
tweetCounts.getTweetCountsPerFrequency(minute, tweet3, 0, 60);// 返回 [2,1]。统计频率是每分钟60 秒因此有两个有效时间间隔 1) [0,60 - 2 条推文和 2) [60,61 - 1 条推文。
tweetCounts.recordTweet(tweet3, 120);
// tweet3 发布推文的时间分别是 0, 10, 60 和 120 。
tweetCounts.getTweetCountsPerFrequency(hour, tweet3, 0, 210);
// 返回 [4]。统计频率是每小时3600 秒因此只有一个有效时间间隔 [0,211 - 4 条推文。提示
同时考虑 recordTweet 和 getTweetCountsPerFrequency最多有 10000 次操作。
0 time, startTime, endTime 10^9
0 endTime - startTime 10^4来源力扣LeetCode 链接https://leetcode-cn.com/problems/tweet-counts-per-frequency 著作权归领扣网络所有。商业转载请联系官方授权非商业转载请注明出处。
2. 解题
用哈希map 存储数据key 是 tweetNamevalue 是set存储时间点
class TweetCounts {unordered_mapstring,setint m;
public:TweetCounts() { }void recordTweet(string tweetName, int time) {m[tweetName].insert(time);}vectorint getTweetCountsPerFrequency(string freq, string tweetName, int startTime, int endTime) {int gap;if(freq minute)gap 60;else if(freq hour)gap 3600;else//daygap 3600*24;if(!m.count(tweetName))return {};vectorint ans;int count, end_t;while(startTime endTime){count 0;end_t min(endTime, startTime gap-1);auto beg m[tweetName].lower_bound(startTime);auto end m[tweetName].upper_bound(end_t);for(auto it beg; it ! end; it){count;}ans.push_back(count);startTime gap;}return ans;}
};