Steward
分享是一種喜悅、更是一種幸福
程式語言 - LeetCode - CPP - 355. Design Twitter
題目:

解答:
class Twitter {
private:
int time;
unordered_map<int, map<int, int>> tweets;
unordered_map<int, unordered_set<int>> friends;
public:
Twitter() {
time = 0;
}
void postTweet(int userId, int tweetId) {
follow(userId, userId);
tweets[userId].insert({ time++, tweetId });
}
vector<int> getNewsFeed(int userId) {
map<int, int> top10;
for (auto id : friends[userId]) {
for (auto a : tweets[id]) {
top10.insert({ a.first, a.second });
if (top10.size() > 10) {
top10.erase(top10.begin());
}
}
}
vector<int> ans;
for (auto a : top10) {
ans.insert(ans.begin(), a.second);
}
return ans;
}
void follow(int followerId, int followeeId) {
friends[followerId].insert(followeeId);
}
void unfollow(int followerId, int followeeId) {
if (followerId != followeeId) {
friends[followerId].erase(followeeId);
}
}
};
/**
* Your Twitter object will be instantiated and called as such:
* Twitter* obj = new Twitter();
* obj->postTweet(userId,tweetId);
* vector<int> param_2 = obj->getNewsFeed(userId);
* obj->follow(followerId,followeeId);
* obj->unfollow(followerId,followeeId);
*/