当前位置: 首页 > news >正文

门户网站功能清单wordpress 站点描述

门户网站功能清单,wordpress 站点描述,微信下拉小程序怎么关闭,变装小说wordpress文章目录摘要描述示例解决答案设计思路题解代码分析测试示例和结果时间复杂度空间复杂度总结摘要 在社交媒体平台里#xff0c;推送机制是核心功能之一。比如你关注了某人#xff0c;就希望在自己的时间线上能看到他们的最新消息#xff0c;同时自己的消息也要能出现在别人… 文章目录摘要描述示例解决答案设计思路题解代码分析测试示例和结果时间复杂度空间复杂度总结摘要 在社交媒体平台里推送机制是核心功能之一。比如你关注了某人就希望在自己的时间线上能看到他们的最新消息同时自己的消息也要能出现在别人的首页。LeetCode 355 题——“设计推特”就把这个场景简化成一个核心设计题。我们要实现一个小型 Twitter 系统支持发推文、关注/取关用户、获取最新消息流。 这道题既考察数据结构的选择也锻炼系统设计思维。接下来我会用 Swift 详细实现并提供一个可运行的 Demo 模块带你一起拆解问题背后的思路。 描述 题目要求设计一个 Twitter 类具备以下功能 postTweet(userId, tweetId) 用户 userId 发送一条推文推文 ID 是 tweetId。 getNewsFeed(userId) 返回用户 userId 的新闻推送内容包括 他自己发的推文他关注的人发的推文只取最近的 10 条按时间顺序由新到旧。 follow(followerId, followeeId) 用户 followerId 关注用户 followeeId。 unfollow(followerId, followeeId) 用户 followerId 取关用户 followeeId。 示例 输入 [Twitter, postTweet, getNewsFeed, follow, postTweet, getNewsFeed, unfollow, getNewsFeed] [[], [1, 5], [1], [1, 2], [2, 6], [1], [1, 2], [1]]输出 [null, null, [5], null, null, [6, 5], null, [5]]解释 用户 1 发推文 [5]获取新闻流 - [5]用户 1 关注用户 2用户 2 发推文 [6]用户 1 获取新闻流 - [6, 5]用户 1 取关用户 2用户 1 获取新闻流 - [5] 解决答案 设计思路 要满足题目要求我们需要以下几个关键点 存储用户发的推文 使用字典 userTweets: [Int: [(Int, Int)]]键是 userId值是推文 (时间戳, tweetId) 列表。 存储用户的关注关系 使用字典 followees: [Int: SetInt]键是 userId值是该用户关注的用户集合。 维护时间顺序 每次发推时记录一个自增的全局时间戳 time保证推文有先后顺序。 获取新闻流 获取当前用户的推文 他关注的人的推文。合并这些推文根据时间戳倒序排序取前 10 条。 虽然这个实现不是最优可以用堆优化但对于题目给的约束最多 3 * 10^4 次操作完全够用。 题解代码分析 下面是 Swift 的完整实现代码 import Foundationclass Twitter {private var time 0private var userTweets: [Int: [(Int, Int)]] [:] // userId - [(time, tweetId)]private var followees: [Int: SetInt] [:] // userId - Set of followeesinit() {}// 发推文func postTweet(_ userId: Int, _ tweetId: Int) {time 1userTweets[userId, default: []].append((time, tweetId))}// 获取新闻流最近 10 条推文func getNewsFeed(_ userId: Int) - [Int] {var tweets: [(Int, Int)] []// 自己的推文if let selfTweets userTweets[userId] {tweets.append(contentsOf: selfTweets)}// 关注者的推文if let followeesSet followees[userId] {for followee in followeesSet {if let followeeTweets userTweets[followee] {tweets.append(contentsOf: followeeTweets)}}}// 按时间倒序排序取前 10 条let sortedTweets tweets.sorted { $0.0 $1.0 }return sortedTweets.prefix(10).map { $0.1 }}// 关注func follow(_ followerId: Int, _ followeeId: Int) {guard followerId ! followeeId else { return } // 不能关注自己followees[followerId, default: []].insert(followeeId)}// 取关func unfollow(_ followerId: Int, _ followeeId: Int) {followees[followerId]?.remove(followeeId)} }测试示例和结果 我们写一个测试函数模拟题目里的操作 func testTwitter() {let twitter Twitter()twitter.postTweet(1, 5)print(News feed of user 1:, twitter.getNewsFeed(1)) // [5]twitter.follow(1, 2)twitter.postTweet(2, 6)print(News feed of user 1 after following 2:, twitter.getNewsFeed(1)) // [6, 5]twitter.unfollow(1, 2)print(News feed of user 1 after unfollowing 2:, twitter.getNewsFeed(1)) // [5] }testTwitter()运行结果 News feed of user 1: [5] News feed of user 1 after following 2: [6, 5] News feed of user 1 after unfollowing 2: [5]时间复杂度 postTweetO(1)follow / unfollowO(1)getNewsFeedO(n log n)其中 n 是自己和关注者的所有推文总数。因为要排序。 在题目约束下调用次数最多 3 * 10^4这个解法是可接受的。 空间复杂度 存储所有推文O(totalTweets)存储关注关系O(totalUsers^2)最坏情况所有人互相关注 整体空间复杂度O(totalTweets totalFollows)。 总结 这道题考察的不是高深的算法而是如何合理地组织数据结构 推文需要保存时间顺序用全局自增计数器解决。用户关系用字典 集合管理。获取新闻流时把相关推文合并再排序。 这个设计在真实系统里当然不够高效Twitter 真实实现用的是复杂的分布式推送系统但在算法题范围内完全够用。 关键 takeaway 拆分功能发推、关注、取关、获取新闻流分别管理。数据结构选型字典存推文和关系数组/集合快速操作。排序保证时间顺序倒序取最近 10 条。
http://www.pierceye.com/news/844816/

相关文章:

  • 宁波网站建设哪家快湛江专业的建站托管
  • 四川省城乡住房建设部网站首页自建wordpress 客户端
  • 番禺做网站价格百度app打开
  • 扬中网站推广导流非国产手机浏览器
  • 外国网站英语要求建立网站就是制作网页
  • 电商网站建设与运营实训可以做网站的app
  • 深圳南山区网站建设公司站长工具seo综合查询 分析
  • 互粉的网站是怎么做的网站建设公司利润怎么样
  • 个人网站平台搭建咸阳企业做网站
  • 租用外国服务器网站网站建设电子商务论文选题方向
  • 网站建设那种语言好wordpress 首页添加链接
  • NET开发网站开发工程师招聘潍坊市网站建设公司
  • 自己开发网站怎么盈利开发游戏需要多少资金
  • 先域名 还是先做网站塘厦
  • 企业公众号以及网站建设wordpress 代码块样式
  • 网站源码搭建教程大同建设银行保安招聘网站
  • 无锡网站设wordpress营销模板
  • 建站哪个好一点wordpress直达按钮
  • 卢松松网站的百度广告怎么做的小程序开发成都公司
  • 导航网站头部代码android开发者官网
  • 网站设计需求分析报告做漫画的网站有哪些
  • 做什么网站吸引人sinaapp wordpress 固定链接
  • 东莞做网站怎么样搜狐综合小时报2022113011
  • 校园网站的意义融资渠道
  • 做网站上海公司自己制作一个网站需要什么软件
  • 铜川做网站电话app开发程序
  • 自助建微网站备案后修改网站名称
  • 免费网站正能量网站如何后台管理
  • 网站开发的质量标准网站如何做自适应
  • 黄南州wap网站建设公司wordpress里面怎么加链接