算法
文章平均质量分 63
z510463173
一点寒芒先到,随后枪出如龙!
展开
-
LFU (最不经常使用算法)缓存
目标LFU 算法是通过存储每个缓存使用的频率,在缓存容量满了之后,删除使用频率最少的缓存来给新的缓存留出空间。如果多个缓存节点都拥有最少使用频率,则删除最久未使用的节点。思路我们会使用到两个 HashMap 以及一个HashLinkedList。链表中的 Node 需要存储 key, value, frequency。一个 HashMap (frequencyTable)存储键值 frequency -> 链表, 另一个(cacheTable)存储键值 key -> Node原创 2021-02-07 21:38:29 · 1521 阅读 · 3 评论 -
LRU (最近最少使用算法) 缓存
目标1. 该缓存通过构造参数限制最大缓存数量 capacity,当缓存容量 size 达到上限时,它应该在写入新数据之前删除最久未使用的数据值,从而为新的数据值留出空间。2. GET 以及 PUT 操作都满足时间复杂度O(1)。思路为了知道最不经常使用缓存数据是哪个,我们可以用链表来存储,接近头部的是最近刚使用的,接近尾部的是最不经常使用的。该缓存还要删除最近不经常使用的节点,需要使用双向链表更方便。GET 以及 PUT 都要满足时间复杂度O(1),唯一可以想到的就是HashMap了。原创 2021-02-07 11:02:55 · 1024 阅读 · 2 评论