news 2026/6/10 7:59:19

模拟:将规则翻译为代码

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
模拟:将规则翻译为代码

介绍

“模拟”(Simulation) 并不是一种像“动态规划”或“二分查找”那样有着严格数学公式或固定套路的算法,而是一种编程思想

简单来说,模拟就是:题目怎么说,你就怎么写代码。讲解一下面试中高频出现的lru算法和lfu算法

LRU算法

lru(Least recently used,最近最少使用)算法,即最近访问的数据,后续很大概率还会被访问到,即是有用的。而长时间未被访问的数据,应该被淘汰

lru算法中数据会被放到一个链表中,链表的头节点为最近被访问的数据,链表的尾节点为长时间没有被访问的数据

lru算法的核心实现就是哈希表加双向链表。链表可以用来维护访问元素的顺序,而hash表可以帮我们在O(1)时间复杂度下访问到元素。

至于为什么是双向链表呢?主要是要删除元素,所以要获取前继节点。数据结构图示如下

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/10 7:57:26

如何快速下载B站视频?bilibili-downloader完整使用指南

如何快速下载B站视频?bilibili-downloader完整使用指南 【免费下载链接】bilibili-downloader B站视频下载,支持下载大会员清晰度4K,持续更新中 项目地址: https://gitcode.com/gh_mirrors/bil/bilibili-downloader 你是否经常想要保存…

作者头像 李华
网站建设 2026/6/10 7:54:41

低代码开发工具到底是给“谁“用的?

低代码开发工具到底是给"谁"用的? 低代码开发工具适合哪些行业使用?低代码开发工具对使用者有哪些技能要求?低代码开发工具能创建哪些类型的应用?这些问题困扰着许多企业决策者。 不同的工具,受众也不一样。你不要认为低代码开发工具只有一种,实际上它分3种。 第…

作者头像 李华
网站建设 2026/6/10 7:52:22

终极指南:5步掌握3DS宝可梦ROM编辑器与随机化工具

终极指南:5步掌握3DS宝可梦ROM编辑器与随机化工具 【免费下载链接】pk3DS Pokmon (3DS) ROM Editor & Randomizer 项目地址: https://gitcode.com/gh_mirrors/pk/pk3DS 你是否想过创造属于自己的宝可梦冒险世界?pk3DS正是这样一款强大的3DS宝…

作者头像 李华
网站建设 2026/6/10 7:52:15

手机 Chrome 远程调试实战:adb + DevTools,localhost 就是你的测试服

后端写了个 H5 支付页,电脑上看得好好的,一扔到手机上——Google Pay 按钮没了。 打开手机浏览器 → 右键检查?没有右键。F12?手机没有 F12。 这时候你需要的不是一台新手机,而是一根 USB 线。 一、为什么要在手机上调…

作者头像 李华
网站建设 2026/6/10 7:48:50

deepin 25 清理失效内核及备份数据教程(清理boot分区)

25.1.1 更新过程中,我发现不少用户遇到了 boot 空间不足的问题——控制中心自动备份失败,然后更新也跟着挂了。 为什么会这样?最近 Linux 内核连续爆了好几个高危漏洞(Copyfail、DirtyFrag),deepin 内核跟…

作者头像 李华