介绍“模拟”(Simulation) 并不是一种像“动态规划”或“二分查找”那样有着严格数学公式或固定套路的算法,而是一种编程思想简单来说,模拟就是:题目怎么说,你就怎么写代码。讲解一下面试中高频出现的lru算法和lfu算法LRU算法lru(Least recently used,最近最少使用)算法,即最近访问的数据,后续很大概率还会被访问到,即是有用的。而长时间未被访问的数据,应该被淘汰lru算法中数据会被放到一个链表中,链表的头节点为最近被访问的数据,链表的尾节点为长时间没有被访问的数据lru算法的核心实现就是哈希表加双向链表。链表可以用来维护访问元素的顺序,而hash表可以帮我们在O(1)时间复杂度下访问到元素。至于为什么是双向链表呢?主要是要删除元素,所以要获取前继节点。数据结构图示如下