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

Golang | Leetcode Golang题解之第355题设计推特

题目:

题解:

type Twitter struct {Tweets []intUserTweets map[int][]intFollows map[int][]intIsFollowMy map[int]bool
}/** Initialize your data structure here. */
func Constructor() Twitter {// 每一次实例化的时候,都重新分配一次,这样不会造成示例重复var Tweets  []int// 某用户发的某条推特var UserTweets = make(map[int][]int)// 某用户关注了哪些用户var Follows = make(map[int][]int)var IsFollowMy = make(map[int]bool)t := Twitter{Tweets:Tweets,UserTweets:UserTweets,Follows: Follows,IsFollowMy: IsFollowMy,}return t
}/** Compose a new tweet. */
func (this *Twitter) PostTweet(userId int, tweetId int)  {// 每个人每次发推特,都记录到一个地方this.Tweets = append(this.Tweets,tweetId)// 某个用户发了推特,存到自己推特列表里this.UserTweets[userId] = append(this.UserTweets[userId],tweetId)
}/** 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. */
func (this *Twitter) GetNewsFeed(userId int) []int {fs := this.Follows[userId] // 先获取该用户的关注列表var allTweets []intfor _,v := range fs {// 把关注列表的人的所有推特都集中起来allTweets = append(allTweets,this.UserTweets[v]...)}if !this.IsFollowMy[userId] {// 如果自己没有关注自己,那么也需要把自己发的推特加到一起allTweets = append(allTweets,this.UserTweets[userId]...)}var sortTweets []intaTLen := len(this.Tweets)s := 0// 按照发的推特顺序进行倒序排序for i:=aTLen-1;i>=0;i-- {if s >= 10 {break}for _,n := range allTweets {// 只取 10条数据if this.Tweets[i] == n && s < 10{s++sortTweets = append(sortTweets,n)}}}return sortTweets
}/** Follower follows a followee. If the operation is invalid, it should be a no-op. */
func (this *Twitter) Follow(followerId int, followeeId int)  {// 如果自己关注了自己,标记一下if followerId == followeeId {this.IsFollowMy[followerId] = true}// 下面是判断这人是否关注了,如果已经关注了,那么就不再关注了var isFed boolfor _,v := range this.Follows[followerId] {if v == followeeId {isFed = true}}if !isFed {this.Follows[followerId] = append(this.Follows[followerId],followeeId)}
}/** Follower unfollows a followee. If the operation is invalid, it should be a no-op. */
func (this *Twitter) Unfollow(followerId int, followeeId int)  {// 如果自己取关了自己,标记一下if followeeId == followerId {this.IsFollowMy[followerId] = false}// 去掉自己关注列表里那个被关注的人var temp []intfor _,v := range this.Follows[followerId] {if v != followeeId {temp = append(temp,v)}}this.Follows[followerId] = temp
}
/*** Your Twitter object will be instantiated and called as such:* obj := Constructor();* obj.PostTweet(userId,tweetId);* param_2 := obj.GetNewsFeed(userId);* obj.Follow(followerId,followeeId);* obj.Unfollow(followerId,followeeId);*/

相关文章:

Golang | Leetcode Golang题解之第355题设计推特

题目&#xff1a; 题解&#xff1a; type Twitter struct {Tweets []intUserTweets map[int][]intFollows map[int][]intIsFollowMy map[int]bool }/** Initialize your data structure here. */ func Constructor() Twitter {// 每一次实例化的时候&#xff0c;都重新分配一次…...

Redis如何实现发布/订阅?

引言 Redis是一款高性能的内存数据存储系统&#xff0c;除了常用的键值存储功能外&#xff0c;还提供了发布/订阅&#xff08;Pub/Sub&#xff09;机制。通过发布/订阅机制&#xff0c;Redis可以实现消息的广播或者实时通知功能&#xff0c;是一种非常有用的功能。 本文将详细…...

EmguCV学习笔记 VB.Net 4.4 图像形态学

版权声明&#xff1a;本文为博主原创文章&#xff0c;转载请在显著位置标明本文出处以及作者网名&#xff0c;未经作者允许不得用于商业目的。 教程VB.net版本请访问&#xff1a;EmguCV学习笔记 VB.Net 目录-CSDN博客 教程C#版本请访问&#xff1a;EmguCV学习笔记 C# 目录-CSD…...

HarmonyOS 开发

环境 下载IDE 代码 import { hilog } from kit.PerformanceAnalysisKit; import testNapi from libentry.so; import { router } from kit.ArkUI; import { common, Want } from kit.AbilityKit;Entry Component struct Index {State message: string Hello HarmonyOS!;p…...

拒绝拖延!Kimi助你一天内速成论文初稿!

撰写学术论文是一项需要周密计划和精确执行的任务。它要求作者对文章的每个部分进行深入思考&#xff0c;以确保论文结构的合理性和论述的清晰度。利用Kimi的功能&#xff0c;我们可以更系统地进行写作&#xff0c;从构思到最终成稿&#xff0c;逐步构建出一篇高质量的学术论文…...

Python画笔案例-005 绘制迷宫

1、绘制迷宫 通过 python 的turtle 库绘制一个迷宫的图案&#xff0c;如下图&#xff1a; 2、实现代码 从图上可以看出&#xff0c;内测最短的竖线开始&#xff0c;每次右转 90 度后&#xff0c;线段都增加 8 个单位&#xff0c;所以我们是用 for 循环&#xff0c;循环 50 次…...

【鸿蒙学习】HarmonyOS应用开发者高级认证 - 应用性能优化二(代码层面)

学完时间&#xff1a;2024年8月22日 学完排名&#xff1a;第1801名 一、长列表优化概述 列表是应用开发中最常见的一类开发场景&#xff0c;它可以将杂乱的信息整理成有规律、易于理解和操作的形式&#xff0c;便于用户查找和获取所需要的信息。应用程序中常见的列表场景有新…...

【Docker】如何将A机器内的镜像,导入到B机器?

由于网络或者仓库的原因&#xff0c;经常遇到pull拉取镜像失败的情况&#xff01;&#xff01; 那么&#xff0c;如何将A机器内的镜像&#xff0c;通过命令&#xff0c;导入到B机器&#xff1f; 两条重要的命令&#xff1a; 1&#xff0c;在已经成功拉取pull的机器上执行命令…...

动手实现基于Reactor模型的高并发Web服务器(一):epoll+多线程版本

系统流程概览 main函数 对于一个服务器程序来说&#xff0c;因为要为外部的客户端程序提供网络服务&#xff0c;也就是进行数据的读写&#xff0c;这就必然需要一个 socket 文件描述符&#xff0c;只有拥有了文件描述符 C/S 两端才能通过 socket 套接字进行网络通信&#xff0…...

爬虫案例4——爬取房天下数据

简介&#xff1a;个人学习分享&#xff0c;如有错误&#xff0c;欢迎批评指正 任务&#xff1a;从房天下网中爬取小区名称、地址、价格和联系电话 目标网页地址&#xff1a;https://newhouse.fang.com/house/s/ 一、思路和过程 目标网页具体内容如下&#xff1a; ​​​​ …...

网络硬盘录像机NVR程序源码NVR全套运用方案

在当今社会&#xff0c;随着科技的飞速发展和人们对安全需求的日益增长&#xff0c;安防监控系统已成为保障公共安全、维护社会稳定的重要手段。其中&#xff0c;网络视频录像机&#xff08;NVR&#xff09;作为安防监控系统的核心设备&#xff0c;其智能化升级运用方案对于提高…...

03:电容的充放电特性及应用举例

1.电容的基本特性&#xff1a;电容两端的电压不能突变 2.影响电容两端电压的参数&#xff1a;整个回路中电阻&#xff0c;电容大小 3.如何计算电容的电压变化时间&#xff1f; τRC R1k C1uF 则得到τ1ms的时间 应用&#xff1a;芯片使能延时...

【专题】2023-2024中国游戏企业研发竞争力报告合集PDF分享(附原数据表)

原文链接&#xff1a; https://tecdat.cn/?p37447 在当今的数字时代&#xff0c;游戏产业已然成为经济与文化领域中一股不可忽视的重要力量。2023 年&#xff0c;中国自研游戏市场更是呈现出一片繁荣且复杂的景象&#xff0c;实际销售收入达到了令人瞩目的 2563.8 亿元&#x…...

会话跟踪方案:Cookie Session Token

什么是会话技术&#xff1f; Cookie 以登录为例&#xff0c;用户在浏览器中将账号密码输入并勾选自动登录&#xff0c;浏览器发送请求&#xff0c;请求头中设置Cookie&#xff1a;userName:张三 ,password:1234aa &#xff0c;若登录成功&#xff0c;服务器将这个cookie保存…...

jemeter压力测试入门

1. 安装jemeter的压缩包并且解压 点击运行 2. 添加线程组 3. 线程组的参数设置 4. 添加http请求 5. 填写请求信息 添加监听器——结果树&#xff08;结果&#xff09;&#xff0c;聚合报告&#xff08;吞吐量报告&#xff09; 6. 通过cvs数据文件设置&#xff0c;配置元件&…...

SpringBoot3 简单集成 Spring AI 并使用

文章目录 准备JDK17api key 创建项目编写配置文件创建controller启动并测试角色预设流式响应\异步响应ChatModel&#xff08;聊天模型&#xff09;ImageModel&#xff08;文生图&#xff09;文生语音语言翻译多模态Function Calling &#xff08;函数调用第三方API&#xff09;…...

【C/C++】程序设计基础知识(数据类型与表达式、控制语句、数组与结构)

【C/C】程序设计基础知识&#xff08;数据类型与表达式、控制语句、数组与结构&#xff09; 一、数据类型与表达式1.1C语言符号1.2C语言运算符1.3数据类型1.4常量与变量1.5基本运算1.6优先级和结合性1.7输入与输出 二、控制语句2.1顺序结构2.2选择结构2.3循环结构2.4break,cont…...

python库——sklearn的关键组件和参数设置

文章目录 模型构建线性回归逻辑回归决策树分类器随机森林支持向量机K-近邻 模型评估交叉验证性能指标 特征工程主成分分析标准化和归一化 scikit-learn&#xff0c;简称sklearn&#xff0c;是Python中一个广泛使用的机器学习库&#xff0c;它建立在NumPy、SciPy和Matplotlib这些…...

CAS-ViT实战:使用CAS-ViT实现图像分类任务(一)

摘要 在视觉转换器&#xff08;Vision Transformers, ViTs&#xff09;领域&#xff0c;随着技术的不断发展&#xff0c;研究者们不断探索如何在保持高效性能的同时&#xff0c;降低模型的计算复杂度&#xff0c;以满足资源受限场景&#xff08;如移动设备&#xff09;的需求。…...

处理数组下标的代码

以下是某个Ada编译器生成的一段汇编代码&#xff1a; mov ecx, eaxmov ebx, eaxsar ebx, 1Fhmov edx, ebxsar edx, 1Fhnot edxmov eax, edxsar eax, 1Fhand ecx, eax以上代码相当于以下C代码&#xff1a; ecx ((~(eax >> 62) >&…...

理解 MCP 工作流:使用 Ollama 和 LangChain 构建本地 MCP 客户端

&#x1f31f; 什么是 MCP&#xff1f; 模型控制协议 (MCP) 是一种创新的协议&#xff0c;旨在无缝连接 AI 模型与应用程序。 MCP 是一个开源协议&#xff0c;它标准化了我们的 LLM 应用程序连接所需工具和数据源并与之协作的方式。 可以把它想象成你的 AI 模型 和想要使用它…...

Python爬虫(一):爬虫伪装

一、网站防爬机制概述 在当今互联网环境中&#xff0c;具有一定规模或盈利性质的网站几乎都实施了各种防爬措施。这些措施主要分为两大类&#xff1a; 身份验证机制&#xff1a;直接将未经授权的爬虫阻挡在外反爬技术体系&#xff1a;通过各种技术手段增加爬虫获取数据的难度…...

2025盘古石杯决赛【手机取证】

前言 第三届盘古石杯国际电子数据取证大赛决赛 最后一题没有解出来&#xff0c;实在找不到&#xff0c;希望有大佬教一下我。 还有就会议时间&#xff0c;我感觉不是图片时间&#xff0c;因为在电脑看到是其他时间用老会议系统开的会。 手机取证 1、分析鸿蒙手机检材&#x…...

鱼香ros docker配置镜像报错:https://registry-1.docker.io/v2/

使用鱼香ros一件安装docker时的https://registry-1.docker.io/v2/问题 一键安装指令 wget http://fishros.com/install -O fishros && . fishros出现问题&#xff1a;docker pull 失败 网络不同&#xff0c;需要使用镜像源 按照如下步骤操作 sudo vi /etc/docker/dae…...

Caliper 配置文件解析:config.yaml

Caliper 是一个区块链性能基准测试工具,用于评估不同区块链平台的性能。下面我将详细解释你提供的 fisco-bcos.json 文件结构,并说明它与 config.yaml 文件的关系。 fisco-bcos.json 文件解析 这个文件是针对 FISCO-BCOS 区块链网络的 Caliper 配置文件,主要包含以下几个部…...

C++ Visual Studio 2017厂商给的源码没有.sln文件 易兆微芯片下载工具加开机动画下载。

1.先用Visual Studio 2017打开Yichip YC31xx loader.vcxproj&#xff0c;再用Visual Studio 2022打开。再保侟就有.sln文件了。 易兆微芯片下载工具加开机动画下载 ExtraDownloadFile1Info.\logo.bin|0|0|10D2000|0 MFC应用兼容CMD 在BOOL CYichipYC31xxloaderDlg::OnIni…...

鸿蒙DevEco Studio HarmonyOS 5跑酷小游戏实现指南

1. 项目概述 本跑酷小游戏基于鸿蒙HarmonyOS 5开发&#xff0c;使用DevEco Studio作为开发工具&#xff0c;采用Java语言实现&#xff0c;包含角色控制、障碍物生成和分数计算系统。 2. 项目结构 /src/main/java/com/example/runner/├── MainAbilitySlice.java // 主界…...

技术栈RabbitMq的介绍和使用

目录 1. 什么是消息队列&#xff1f;2. 消息队列的优点3. RabbitMQ 消息队列概述4. RabbitMQ 安装5. Exchange 四种类型5.1 direct 精准匹配5.2 fanout 广播5.3 topic 正则匹配 6. RabbitMQ 队列模式6.1 简单队列模式6.2 工作队列模式6.3 发布/订阅模式6.4 路由模式6.5 主题模式…...

20个超级好用的 CSS 动画库

分享 20 个最佳 CSS 动画库。 它们中的大多数将生成纯 CSS 代码&#xff0c;而不需要任何外部库。 1.Animate.css 一个开箱即用型的跨浏览器动画库&#xff0c;可供你在项目中使用。 2.Magic Animations CSS3 一组简单的动画&#xff0c;可以包含在你的网页或应用项目中。 3.An…...

苹果AI眼镜:从“工具”到“社交姿态”的范式革命——重新定义AI交互入口的未来机会

在2025年的AI硬件浪潮中,苹果AI眼镜(Apple Glasses)正在引发一场关于“人机交互形态”的深度思考。它并非简单地替代AirPods或Apple Watch,而是开辟了一个全新的、日常可接受的AI入口。其核心价值不在于功能的堆叠,而在于如何通过形态设计打破社交壁垒,成为用户“全天佩戴…...