dw做网站环境配置网站建设前端工程师岗位职责

张小明 2026/1/14 7:14:09
dw做网站环境配置,网站建设前端工程师岗位职责,怎么用h5网站做动效,简单网站建设价格文章目录摘要描述题解答案题解代码分析节点需要存什么信息#xff1f;为什么要用「频次 → 双向链表」#xff1f;LFUCache 的核心结构get 操作怎么做#xff1f;put 操作的关键点更新频次是整个设计的核心示例测试及结果与实际场景结合时间复杂度空间复杂度总结摘要 LFU 缓…文章目录摘要描述题解答案题解代码分析节点需要存什么信息为什么要用「频次 → 双向链表」LFUCache 的核心结构get 操作怎么做put 操作的关键点更新频次是整个设计的核心示例测试及结果与实际场景结合时间复杂度空间复杂度总结摘要LFU 缓存是缓存算法里的“进阶关卡”。LRU 大家都很熟但 LFU 往往是很多人刷 LeetCode 时第一次真正感受到“原来 O(1) 的设计不是写得快而是数据结构选得对。”这道题不只是让你写一个缓存而是在逼你回答三个工程级问题怎么在 O(1) 内找到最少使用的 key使用次数相同时怎么再按 LRU 淘汰get / put 都要是 O(1)不能靠排序、遍历硬撑。描述题目要求你实现一个 LFUCache支持get(key)存在返回 value并且使用次数 1不存在返回 -1put(key, value)key 已存在更新 value并且使用次数 1key 不存在如果缓存没满直接插如果缓存满了先淘汰使用次数最少如果次数相同淘汰最久没用的并且有一个非常重要的硬指标get和put的平均时间复杂度必须是O(1)这直接排除了所有“排序 / 每次扫描一遍”的方案。题解答案真正能跑通并满足 O(1) 的解法核心是三层结构key → Node 映射freq → 双向链表 映射一个全局的minFreq一句话总结用 HashMap 快速定位节点用「频次分桶 LRU 链表」来控制淘汰顺序。题解代码分析节点需要存什么信息每一个缓存项至少要知道keyvalue当前使用频率 freq在链表里的前后指针为了 O(1) 删除classNode{letkey:Intvarvalue:Intvarfreq:Int1varprev:Node?varnext:Node?init(_key:Int,_value:Int){self.keykeyself.valuevalue}}为什么要用「频次 → 双向链表」因为 LFU 有一个隐藏条件同一个频次下要按 LRU 淘汰所以每个频次桶本质上是一个LRU 链表。classDoublyLinkedList{letheadNode(0,0)lettailNode(0,0)varsize0init(){head.nexttail tail.prevhead}funcaddToHead(_node:Node){node.nexthead.next node.prevhead head.next?.prevnode head.nextnode size1}funcremove(_node:Node){node.prev?.nextnode.next node.next?.prevnode.prev size-1}funcremoveLast()-Node?{guardsize0,letlasttail.prev,last!headelse{returnnil}remove(last)returnlast}}LFUCache 的核心结构classLFUCache{privateletcapacity:IntprivatevarminFreq0privatevarkeyToNode[Int:Node]()privatevarfreqToList[Int:DoublyLinkedList]()keyToNodeO(1) 找节点freqToListO(1) 找某个频次的 LRU 链表minFreqO(1) 知道该淘汰谁get 操作怎么做核心逻辑只有三步查 key 是否存在从旧 freq 链表中移除freq 1放进新链表funcget(_key:Int)-Int{guardletnodekeyToNode[key]else{return-1}updateFreq(node)returnnode.value}put 操作的关键点capacity 为 0直接返回key 已存在更新 value 更新 freqkey 不存在如果满了从minFreq对应的链表里删最久未使用插入新节点freq 1funcput(_key:Int,_value:Int){ifcapacity0{return}ifletnodekeyToNode[key]{node.valuevalueupdateFreq(node)return}ifkeyToNode.countcapacity{ifletlistfreqToList[minFreq],letremovedlist.removeLast(){keyToNode.removeValue(forKey:removed.key)}}letnewNodeNode(key,value)keyToNode[key]newNodeletlistfreqToList[1]??DoublyLinkedList()list.addToHead(newNode)freqToList[1]list minFreq1}更新频次是整个设计的核心privatefuncupdateFreq(_node:Node){letfreqnode.freqifletlistfreqToList[freq]{list.remove(node)iffreqminFreqlist.size0{minFreq1}}node.freq1letnewListfreqToList[node.freq]??DoublyLinkedList()newList.addToHead(node)freqToList[node.freq]newList}这里做了三件事从旧频次链表移除如果刚好是 minFreq 且链表空了更新 minFreq插入新频次链表头部示例测试及结果letlfuLFUCache(2)lfu.put(1,1)lfu.put(2,2)print(lfu.get(1))// 1lfu.put(3,3)print(lfu.get(2))// -1print(lfu.get(3))// 3lfu.put(4,4)print(lfu.get(1))// -1print(lfu.get(3))// 3print(lfu.get(4))// 4输出结果1 -1 3 -1 3 4和题目示例完全一致。与实际场景结合LFU 在真实项目里比你想象中常见比如CDN 本地缓存App 内图片 / 数据缓存后端热点数据保护推荐系统中的候选集缓存相比 LRULFU 更适合“长期高频访问的数据不能因为短期冷却就被干掉”比如用户主页、配置数据、热门商品列表。时间复杂度getO(1)putO(1)这是通过HashMap 双向链表 minFreq联合保证的。空间复杂度O(capacity)所有节点、链表总数都和缓存容量线性相关。总结LFU 这道题真正难的不是代码多而是你能不能拆清楚“频次”和“时间”这两个维度你能不能在 O(1) 下把这两个维度同时维护住如果你能完整写出这道题其实已经具备了设计复杂缓存系统的能力面试中讲清楚“为什么这样设计”的底气把算法真正落地成工程代码的经验
版权声明:本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

网站建设工程师招聘Wordpress教程推荐

Amlogic S9XXX Armbian 终极指南:从电视盒子到全能服务器的华丽转身 【免费下载链接】amlogic-s9xxx-armbian amlogic-s9xxx-armbian: 该项目提供了为Amlogic、Rockchip和Allwinner盒子构建的Armbian系统镜像,支持多种设备,允许用户将安卓TV系…

张小明 2026/1/13 14:36:31 网站建设

如何让自己做的网页有网站旅游网站建设网

还在为复杂的Python环境配置头疼吗?想要一个即开即用的视频下载工具吗?今天带你用最简单的方法,快速部署跨平台的you-get媒体下载神器,从此告别繁琐安装步骤! 【免费下载链接】you-get :arrow_double_down: Dumb downl…

张小明 2026/1/14 4:56:32 网站建设

网站策划及过程如何网站增加域名

还在为复杂的流媒体配置而头疼吗?go2rtc作为终极相机流媒体应用,支持RTSP、RTMP、WebRTC、MSE等10主流协议,让你在5分钟内轻松搭建专业的流媒体服务。本文将从零开始,带你快速掌握这个强大的开源工具。 【免费下载链接】go2rtc Ul…

张小明 2026/1/13 18:29:10 网站建设

杭州金融网站建设简述站点推广有哪些方式

掌握Sticky:Linux桌面高效笔记管理神器 【免费下载链接】sticky A sticky notes app for the linux desktop 项目地址: https://gitcode.com/gh_mirrors/stic/sticky 在日常工作和学习中,你是否经常遇到这样的困扰:灵感闪现时找不到纸…

张小明 2026/1/14 1:19:38 网站建设

vuecms网站开发今天重大新闻100字

腾讯混元3D-Part文件格式5大秘诀:从导入到导出的终极指南 【免费下载链接】Hunyuan3D-Part 腾讯混元3D-Part 项目地址: https://ai.gitcode.com/tencent_hunyuan/Hunyuan3D-Part 在3D内容创作领域,文件格式兼容性一直是制约工作效率的关键瓶颈。设…

张小明 2026/1/13 23:00:36 网站建设

广州 flash 网站免费找图片素材的网站

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容: 快速生成一个音乐播放器的Qt原型界面,包含:1.播放控制栏(播放/暂停、上一首、下一首) 2.播放列表 3.专辑封面显示区 4.进度条 5.音量控制。不需要实际播放功…

张小明 2026/1/13 20:56:20 网站建设