LeetCode 355. 设计推特(哈希map+set)

1. 题目

设计一个简化版的推特(Twitter),可以让用户实现发送推文,关注/取消关注其他用户,能够看见关注人(包括自己)的最近十条推文。你的设计需要支持以下的几个功能:

  • postTweet(userId, tweetId): 创建一条新的推文
  • getNewsFeed(userId): 检索最近的十条推文。每个推文都必须是由此用户关注的人或者是用户自己发出的。推文必须按照时间顺序由最近的开始排序。
  • follow(followerId, followeeId): 关注一个用户
  • unfollow(followerId, followeeId): 取消关注一个用户
示例:Twitter twitter = new Twitter();// 用户1发送了一条新推文 (用户id = 1, 推文id = 5).
twitter.postTweet(1, 5);// 用户1的获取推文应当返回一个列表,其中包含一个id为5的推文.
twitter.getNewsFeed(1);// 用户1关注了用户2.
twitter.follow(1, 2);// 用户2发送了一个新推文 (推文id = 6).
twitter.postTweet(2, 6);// 用户1的获取推文应当返回一个列表,其中包含两个推文,id分别为 -> [6, 5].
// 推文id6应当在推文id5之前,因为它是在5之后发送的.
twitter.getNewsFeed(1);// 用户1取消关注了用户2.
twitter.unfollow(1, 2);// 用户1的获取推文应当返回一个列表,其中包含一个id为5的推文.
// 因为用户1已经不再关注用户2.
twitter.getNewsFeed(1);

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/design-twitter
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

2. 解题

struct cmp
{bool operator()(const vector<int> &a, const vector<int> &b) const{return a[0] < b[0];}
};
class Twitter {unordered_map<int,unordered_set<int>> m;//id,关注的人set<vector<int>,cmp> tweet;//time, 推文id,用户idint time = 0;int count;vector<int> ans;
public:/** Initialize your data structure here. */Twitter() {}/** Compose a new tweet. */void postTweet(int userId, int tweetId) {tweet.insert({time++, tweetId, userId});}/** Retrieve the 10 most recent tweet ids in the user's news feed. Each item in the news feed must be posted by users who the user followed or by the user herself. Tweets must be ordered from most recent to least recent. */vector<int> getNewsFeed(int userId) {count = 10;ans.clear();for(auto it = tweet.rbegin(); it != tweet.rend() && count; ++it){if((*it)[2]==userId || m[userId].count((*it)[2])){ans.push_back((*it)[1]);count--;}}return ans;}/** Follower follows a followee. If the operation is invalid, it should be a no-op. */void follow(int followerId, int followeeId) {m[followerId].insert(followeeId);}/** Follower unfollows a followee. If the operation is invalid, it should be a no-op. */void unfollow(int followerId, int followeeId) {m[followerId].erase(followeeId);}
};

532 ms 21.7 MB

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/476606.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

写出一段代码将链表中的两个节点位置互换位置_面试 leetcode 算法专题系列(二)—— 链表...

前言&#xff1a;只照着常考题去刷题确实是一种方法。但调研之后发现自己还是考虑不周&#xff0c;刷题刷的不应该是题&#xff0c;而是解题的思路和熟练程度。于是我决定重新组织一下刷题笔记的讲解顺序&#xff0c;不再以面试常考题来刷。而是以面试出题频率&#xff0c;方法…

感人至深的文章

http://bbs2.news.163.com/bbs/baoliao/75948727.html 转载于:https://www.cnblogs.com/shf/archive/2008/05/12/1192975.html

2022年度最佳开源软件榜单出炉!

源&#xff5c; OSC开源社区&#xff08;ID&#xff1a;oschina2013)InfoWorld 公布了 2022 年最佳开源软件榜单。InfoWorld 是致力于引领 IT 决策者走在科技前沿的国际科技媒体品牌&#xff0c;每年 InfoWorld 都会根据软件对开源界的贡献&#xff0c;以及在业界的影响力评选出…

程序员面试金典 - 面试题 16.13. 平分正方形(数学)

1. 题目 给定两个正方形及一个二维平面。请找出将这两个正方形分割成两半的一条直线。 假设正方形顶边和底边与 x 轴平行。 每个正方形的数据square包含3个数值&#xff0c;正方形的左下顶点坐标[X,Y] [square[0],square[1]]&#xff0c;以及正方形的边长square[2]。 所求直…

吵翻了!确认录取后导师和学生“互放鸽子”,网友:线上选拔太混乱

源 | 募格学术参考 | 中国科学报、科学网博客、知乎等导师和学生互相“放鸽子”是种怎样的体验&#xff1f;近日&#xff0c;《中国科学报》的一篇文章揭露了疫情下线上推免选拔的乱象。因为某些原因&#xff0c;产生了一些所谓“海王院校”&#xff08;指在夏令营或预推免中&a…

监控和剖析数据库操作P6Spy,SQL Profiler,SQL 使用简介

新一篇: 关于java类的动态装载 几乎 80% - 85% 的数据库性能问题是由于应用数据库的设计或者应用程序本身的代码所引起的。因此良好的事务处理能力需要在设计应用程序的时候&#xff0c;在设计数据库的时候就考虑到性能和伸缩性。 ---- DB2 Magazine 在我们 Java 开发应用程序的…

python新手练习项目_适合Python 新手的5大练手项目,你练了么?

已经学习了一段时间的Python&#xff0c;如果你看过之前W3Cschool的文章&#xff0c;就知道是时候该进去【项目】阶段了。 但是在练手项目的选择上&#xff0c;还存在疑问&#xff1f;不知道要从哪种项目先下手&#xff1f; W3Cschool首先有两点建议&#xff1a; 最好不要写太应…

LeetCode 866. 回文素数(除11外,偶数位的回文数都不是质数)

1. 题目 求出大于或等于 N 的最小回文素数。 回顾一下&#xff0c;如果一个数大于 1&#xff0c;且其因数只有 1 和它自身&#xff0c;那么这个数是素数。 例如&#xff0c;2&#xff0c;3&#xff0c;5&#xff0c;7&#xff0c;11 以及 13 是素数。 回顾一下&#xff0c;…

首个在ImageNet上精度超过80%的二值神经网络BNext问世,-1与+1的五年辛路历程

源 | 机器之心两年前&#xff0c;当 MeliusNet 问世时&#xff0c;机器之心曾发表过一篇技术文章《第一次胜过 MobileNet 的二值神经网络&#xff0c;-1 与 1 的三年艰苦跋涉》&#xff0c;回顾了 BNN 的发展历程。彼时&#xff0c;依靠早期 BNN 工作 XNOR-Net 起家的 XNOR.AI…

中countif函数_countif与countifs:单条件与多条件计数适用场景

countif&#xff08;&#xff09;的语法图丑~~图丑~~见谅~~Countif函数&#xff1a;对指定区域中符合指定条件的单元格计数。该函数的语法规则如下:countif(range&#xff0c;criteria)参数:range 要计算其中非空单元格数目的区域参数:criteria 以数字、表达式或文本形式定义的…

极大似然模型1

first_step.m%clear; syms rou fai2 k1 k2 k3 n rorn ii clc; ninput(观测时刻数 n); disp( dealing ); disp(Just wait for a few minutes............); k1sym((1-rou*rou)*(1-fai2*fai2)*Xmn(rorn,1)*Xmn(rorn,1)); k2sym((1-fai2^2)*(Xmn…

LeetCode 1177. 构建回文串检测(前缀和)

1. 题目 给你一个字符串 s&#xff0c;请你对 s 的子串进行检测。 每次检测&#xff0c;待检子串都可以表示为 queries[i] [left, right, k]。我们可以 重新排列 子串 s[left], ..., s[right]&#xff0c;并从中选择 最多 k 项替换成任何小写英文字母。 如果在上述检测过程…

张俊林:ChatGPT会成为下一代搜索引擎吗

文|张俊林知乎本文将从以下几个方面展开&#xff1a;引言ChatGPT的技术原理ChatGPT能否取代Google、百度等传统搜索引擎引言作为智能对话系统&#xff0c;ChatGPT最近两天爆火&#xff0c;都火出技术圈了&#xff0c;网上到处都在转ChatGPT相关的内容和测试例子&#xff0c;效果…

k8s dashboard_k8s集群部署Dashboard

部署Dashboard&#xff08;Web UI&#xff09;* dashboard-deployment.yaml // 部署Pod&#xff0c;提供Web服务 * dashboard-rbac.yaml // 授权访问apiserver获取信息 * dashboard-service.yaml // 发布服务&#xff0c;提供对外访问 ​…

.Net笔试题 有答案

在对SQL Server 数据库操作时应选用&#xff08;a&#xff09;。 a)SQL Server .NET Framework 数据提供程序&#xff1b; b)OLE DB .NET Framework 数据提供程序&#xff1b; c)ODBC .NET Framework 数据提供程序&#xff1b; d)Oracle .NET Framework数据提供程序&#x…

程序员面试金典 - 面试题 17.13. 恢复空格(DP+Trie树)

文章目录1. 题目2. 解题2.1 动态规划2.2 Trie树1. 题目 哦&#xff0c;不&#xff01;你不小心把一个长篇文章中的空格、标点都删掉了&#xff0c;并且大写也弄成了小写。 像句子"I reset the computer. It still didn’t boot!"已经变成了"iresetthecomputeri…

2022的结尾,对话系统起飞了

文 | 郑楚杰知乎编者记&#xff1a;近日来&#xff0c;ChatGPT的连续刷屏让人们重新看到了AI的希望&#xff0c;编者通过对ChatGPT的试用&#xff0c;发现其对话能力早已不同于两年前的对话系统了&#xff0c;可以说&#xff0c;有了质的飞跃&#xff0c;向着用户体验奇点迈进了…

python清除列表内容_Python 列表的清空方式

情况列表的操作&#xff1a; del list[:] list[] list[:][] def func(L): L.append(1) print L #L[:][] #del L[:] L [] print L L[] func(L) print L 输出结果&#xff1a; [1] [] [1] 分析&#xff1a;L是可变数据类型&#xff0c;L作为参数&#xff0c;函数内对L的改变&…

ASP.NET小收集:Word的编码是Unicode

Word的编码是Unicode&#xff0c;从Word连接的超链接会附带Unicode编码进行打开&#xff0c;所以&#xff0c;如果没有对链接页面设定编码&#xff0c;将出现乱码&#xff0c;解决方法之一&#xff1a;设置编码为UTF-8<meta http-equiv"Content-Type" content&quo…

程序员面试金典 - 面试题 05.08. 绘制直线(位运算)

1. 题目 绘制直线。有个单色屏幕存储在一个一维数组中&#xff0c;使得32个连续像素可以存放在一个 int 里。 屏幕宽度为w&#xff0c;且w可被32整除&#xff08;即一个 int 不会分布在两行上&#xff09;&#xff0c;屏幕高度可由数组长度及屏幕宽度推算得出。 请实现一个函数…