首页
题库
公司真题
专项练习
面试题库
在线编程
面试
面试经验
AI 模拟面试
简历
求职
学习
基础学习课
实战项目课
求职辅导课
专栏&文章
竞赛
我要招人
发布职位
发布职位、邀约牛人
更多企业解决方案
AI面试、笔试、校招、雇品
HR免费试用AI面试
最新面试提效必备
登录
/
注册
彭三岁
字节跳动_服务端开发
发布于北京
关注
已关注
取消关注
@永恒的图灵:
题解 | #go语言设计LRU缓存结构#
题目要求 get 和 set 请求都是 O(1)O(1)O(1) 的平均时间复杂度,那很容易想到使用 map,但如果 value 是 int 型,那就很难实现 LRU 的目的,我们可以设计一个双端链表,将最近访问和插入的节点插入到链表的头节点,当缓存不够时,只需要移出链表尾部的节点,因为要是 set 操作时间复杂度也是 O(1)O(1)O(1) 所以必须时刻记录尾节点的位置,这也是为什么要使用双端链表的目的。// 双向链表type DLinkedNode struct{ key,value int prev,next *DLinkedNode}type Solution struct { // write code here Capacity,size int Cache map[int]*DLinkedNode head,tail *DLinkedNode}// 生成链表节点func InitialDLinkNode(key,value int) *DLinkedNode{ return &DLinkedNode{key:key,value:value}} func Constructor(capacity int) Solution { solution:= Solution{ Capacity:capacity, // 生成虚拟头节点 head:InitialDLinkNode(0,0), // 生成虚拟尾节点 tail:InitialDLinkNode(0,0), Cache:make(map[int]*DLinkedNode,capacity), } // 初始化head和tail节点 solution.head.next=solution.tail solution.tail.prev=solution.head return solution}func (this *Solution) get(key int) int { // write code here if node,ok:=this.Cache[key];!ok{ return -1 }else{ // 最近访问的节点移动到链表头节点 this.moveToHead(node) return node.value } }func (this *Solution) set(key int, value int) { // write code here if node,ok:=this.Cache[key];!ok{ // 根据key,value生成链表节点 newNode:=InitialDLinkNode(key,value) this.Cache[key]=newNode // 新节点插入到链表头 this.addToHead(newNode) this.size++ // 缓存满 if this.size>this.Capacity{ // 移除尾节点 removed:=this.removeTail() delete(this.Cache,removed.key) this.size-- } }else{ node.value=value // 最近访问的节点移动到链表头 this.moveToHead(node) }}// 插入到链表头func (this *Solution) addToHead(node *DLinkedNode){ node.prev=this.head node.next=this.head.next this.head.next.prev=node this.head.next=node}// 删除节点func (this *Solution) removeNode(node *DLinkedNode){ node.prev.next=node.next node.next.prev=node.prev}// 移动节点到头节点位置func (this *Solution) moveToHead(node *DLinkedNode){ this.removeNode(node) this.addToHead(node)}// 移除尾节点func (this *Solution) removeTail()(node *DLinkedNode){ node=this.tail.prev this.removeNode(node) return node}/** * Your Solution object will be instantiated and called as such: * solution := Constructor(capacity); * output := solution.get(key); * solution.set(key,value); */
点赞 2
评论 0
全部评论
推荐
最新
楼层
暂无评论,快来抢首评~
相关推荐
04-28 19:50
C++
C++项目:基于muduo、protobuf、zookeeper实现RPC框架
项目地址: https://github.com/attackoncs/rpc/tree/main?tab=readme-ov-filehttps://github.com/terryup/rpc因为这个项目在GitHub有多个链接,老廖综合了各家的资料并做了整理.C++学到什么程度可以就业-以C++RPC项目(可写简历)为例讲解 整理, 更多项目资料可以点击查看.1 分布式网络通信rpc框架1.1 快速开始安装zookeeper、muduo、protobuf、cmake,参考 第2章节 <<环境搭建>>1.2 分布式网络通信rpc框架项目是分布式网络通信rpc框架(...
校招过来人的经验分享
简历中的项目经历要怎么写
点赞
评论
收藏
分享
04-27 21:55
门头沟学院 前端工程师
26前端找实习记录贴42
暑期是进不了大厂了想问问前端友友们 ,后面应该如何沉淀自己,我想秋招再冲一下尤其是八股,应该抓哪一块是重点,理解到什么程度呢,要学到什么深度才能抗住拷打。还有场景题如何去准备。期待友友们的解答。
命烈焰带我飞走:
找个中厂小厂先看看吧,去了熟悉熟悉项目,简历上扒点东西,之后刷刷sobb上百度美团快手的日常实习,流程都比较快轮次也少,别给自己太大压力,一步一步来,先不用想着暑期,转正,秋招那些事情,另外如果可能的话可以关注下面试时候的形象,穿搭,环境这些,其实实习主要就是看个眼缘,看着好看声音好听其实加分不少..八股这些不要死记硬背,挨个拿去问问chatgpt,这个东西做出来是为了解决什么问题,有啥效果,自己有想法有个模糊的概念就可以了,人家也知道你是学生,实习生没有什么kpi,放你去面都是希望能把你招进去的,场景题算法题没做过你可以边试着写边跟面试官说你的想法思路,也可以直说没见过让他们给你提示,反正最后都是与或非顺序分支循环存取值那套。总之建议是别为了秋招..出去旅旅游放松放松,少投几家少背八股多写写代码
点赞
评论
收藏
分享
04-11 15:25
长园深瑞_嵌入式开发_嵌入式软件工程师(准入职员工)
传音控股
哥们等了半个小时了快,面试官还没来就hr来了,绷不住了 。太神了。
吴offer选手:
学到了,下次面试也放张纸在电脑上,不然老是忘记要说哪几个点
点赞
评论
收藏
分享
04-18 00:32
已编辑
中南大学 Java
实习投递动态
4.17更新
点赞
评论
收藏
分享
04-28 22:23
武汉理工大学 大数据开发工程师
金五银六,未来可期
未来可期未来可期未来可期未来可期未来可期未来可期未来可期未来可期未来可期未来可期#牛客AI配图神器#
求职遇到的搞笑事件
如果有时光机,你最想去到哪个年纪?
点赞
评论
收藏
分享
评论
点赞成功,聊一聊 >
点赞
收藏
分享
评论
提到的真题
返回内容
全站热榜
更多
1
...
暑期后端高频问题汇总
7.3W
2
...
左手敲代码的程序员,不配拥有offer吗?
6.0W
3
...
后端简历上最值得写的项目
1.1W
4
...
北京到底有谁在啊?
9695
5
...
五一假期,弯道超车时间表
9264
6
...
五一准备刷完这些面试八股题!!
8747
7
...
五一别写你那破开源代码了
7617
8
...
和ai聊天,忍不住爆哭
6706
9
...
给你看看给大学生开10k的前端面经长啥样
5789
10
...
快手投诉后续- HR把我拉黑了!
5574
创作者周榜
更多
正在热议
更多
#
找工作,行业重要还是岗位重要?
#
8014次浏览
104人参与
#
五一之后,实习真的很难找吗?
#
46227次浏览
334人参与
#
盲审过后你想做什么?
#
12793次浏览
115人参与
#
领导秒批的请假话术
#
10053次浏览
74人参与
#
小厂实习有必要去吗
#
42242次浏览
260人参与
#
设计人如何选offer
#
98468次浏览
690人参与
#
外包能不能当跳板?
#
22213次浏览
191人参与
#
五一假期,你打算“躺”还是“卷”?
#
31577次浏览
441人参与
#
考研可以缓解求职焦虑吗
#
21317次浏览
252人参与
#
面试等了一周没回复,还有戏吗
#
115727次浏览
1076人参与
#
大疆的机械笔试比去年难吗
#
69669次浏览
603人参与
#
找工作前vs找工作后的心路变化
#
7214次浏览
64人参与
#
如果有时光机,你最想去到哪个年纪?
#
43363次浏览
769人参与
#
硬件人,你被哪些公司给挂了
#
46792次浏览
723人参与
#
写简历别走弯路
#
714629次浏览
7850人参与
#
应届生薪资多少才合理?
#
3130次浏览
24人参与
#
你喜欢工作还是上学
#
37744次浏览
413人参与
#
每人推荐一个小而美的高薪公司
#
72866次浏览
1357人参与
#
如果不工作真的会快乐吗
#
101305次浏览
868人参与
#
许愿池
#
271929次浏览
2849人参与
牛客网
牛客企业服务