LintCode领扣算法问题答案:501. 迷你推特
发布日期:2021-06-30 17:13:33
浏览次数:2
分类:技术文章
本文共 3443 字,大约阅读时间需要 11 分钟。
501. 迷你推特
描述
实现一个迷你的推特,支持下列几种方法
- postTweet(user_id, tweet_text). 发布一条推特.
- getTimeline(user_id). 获得给定用户最新发布的十条推特,按照发布时间从最近的到之前排序
- getNewsFeed(user_id). 获得给定用户的朋友或者他自己发布的最新十条推特,从发布时间最近到之前排序
- follow(from_user_id, to_user_id). from_user_id 关注 to_user_id.
- unfollow(from_user_id, to_user_id). from_user_id 取消关注 to_user_id.
样例 1:
输入: postTweet(1, "LintCode is Good!!!") getNewsFeed(1) getTimeline(1) follow(2, 1) getNewsFeed(2) unfollow(2, 1) getNewsFeed(2)输出: 1 [1] [1] [1] []
样例 2:
输入: postTweet(1, "LintCode is Good!!!") getNewsFeed(1) getTimeline(1) follow(2, 1) postTweet(1, "LintCode is best!!!") getNewsFeed(2) unfollow(2, 1) getNewsFeed(2)输出: 1 [1] [1] 2 [2,1] []
样例 3:
输入:
文章目录
题解
/** * Definition of Tweet: * public class Tweet { * public int id; * public int user_id; * public String text; * public static Tweet create(int user_id, String tweet_text) { * // This will create a new tweet object, * // and auto fill id * } * } */public class MiniTwitter { private final Map> db; private final Map > rel; public MiniTwitter() { // do intialization if necessary db = new HashMap<>(); rel = new HashMap<>(); } /* * @param user_id: An integer * @param tweet_text: a string * @return: a tweet */ public Tweet postTweet(int user_id, String tweet_text) { // write your code here Tweet tweet = Tweet.create(user_id, tweet_text); LinkedList l = db.get(user_id); if (l == null) { l = new LinkedList<>(); db.put(user_id, l); } l.addFirst(tweet); if (l.size() > 10) { l.removeLast(); } return tweet; } /* * @param user_id: An integer * @return: a list of 10 new feeds recently and sort by timeline */ public List getNewsFeed(int user_id) { // write your code here List temp = new ArrayList<>(); LinkedList l = db.get(user_id); if (l != null) { temp.addAll(l); } Set s = rel.get(user_id); if (s != null) { for (Integer id : rel.get(user_id)) { LinkedList rl = db.get(id); if (rl != null) { temp.addAll(rl); } } } Collections.sort(temp, new Comparator () { @Override public int compare(Tweet o1, Tweet o2) { return o2.id - o1.id; } }); List ans = new ArrayList<>(); for (int i = 0; i < Math.min(10, temp.size()); ++i) { ans.add(temp.get(i)); } return ans; } /* * @param user_id: An integer * @return: a list of 10 new posts recently and sort by timeline */ public List getTimeline(int user_id) { // write your code here LinkedList l = db.get(user_id); if (l == null) { l = new LinkedList<>(); db.put(user_id, l); } return l; } /* * @param from_user_id: An integer * @param to_user_id: An integer * @return: nothing */ public void follow(int from_user_id, int to_user_id) { // write your code here Set s = rel.get(from_user_id); if (s == null) { s = new HashSet<>(); rel.put(from_user_id, s); } s.add(to_user_id); } /* * @param from_user_id: An integer * @param to_user_id: An integer * @return: nothing */ public void unfollow(int from_user_id, int to_user_id) { // write your code here Set s = rel.get(from_user_id); s.remove(to_user_id); }}
最后说两句
非常感谢你阅读本文章,如果你觉得本文对你有所帮助,请留下你的足迹,点个赞,留个言,多谢~
作者水平有限,如果文章内容有不准确的地方,请指正。
希望小伙伴们都能每天进步一点点。
声明
本文由博客原创,转载请注明来源,谢谢~
转载地址:https://le-yi.blog.csdn.net/article/details/114539760 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
初次前来,多多关照!
[***.217.46.12]2024年04月08日 05时47分24秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
决策树 Decision tree
2019-04-30
nominal和ordinal & 数据处理中四种基本数据类型
2019-04-30
Python 实现 Cross-validation
2019-04-30
Grid SearchCV(网格搜索)& Python实现
2019-04-30
ROS相关知识
2019-04-30
单目深度估计 monodepth2模型 代码
2019-04-30
位图索引Bitmap indexes
2019-04-30
YOLO算法(二)—— Yolov2 & yolo9000
2019-04-30
YOLO算法(三)—— Yolov3 & Yolo系列网络优缺点
2019-04-30
Python的__future__模块
2019-04-30
计算机视觉中的cost-volume的概念具体指什么(代价体积)
2019-04-30
启发函数heuristic 与 A*
2019-04-30
Image Pyramid(图像金字塔)
2019-04-30
Oracle 作业记录
2019-04-30