获得徽章 12
- #每日一题#
使用 JavaScript 实现 LRU 缓存的代码示例:
(如图)
在代码中,我们使用了 Map 来实现缓存,Map 是一种可以存储键值对的数据结构。缓存的最大容量是通过 capacity 参数传递的。
get 方法用于获取给定键的值,如果缓存中存在该键,则将其值移到最前面,并返回该值;如果缓存中不存在该键,则返回 -1。
put 方法用于将给定的键值对添加到缓存中。如果缓存中已经存在该键,则将其值更新为新的值,并将该键值对移到最前面;如果缓存已满,则删除最久未使用的键,并将新键值对添加到缓存的最前面。
这个实现可以很好地处理 LRU 缓存,因为它能够在 O(1) 时间内进行 get 和 put 操作,而不需要对整个缓存进行扫描。同时,由于使用了 Map 来存储键值对,因此它能够保持键值对的插入顺序,方便我们找到最久未使用的键。
在上面的代码中,我们使用了 Map 来实现缓存,Map 是一种可以存储键值对的数据结构。缓存的最大容量是通过 capacity 参数传递的。
get 方法用于获取给定键的值,如果缓存中存在该键,则将其值移到最前面,并返回该值;如果缓存中不存在该键,则返回 -1。
put 方法用于将给定的键值对添加到缓存中。如果缓存中已经存在该键,则将其值更新为新的值,并将该键值对移到最前面;如果缓存已满,则删除最久未使用的键,并将新键值对添加到缓存的最前面。
这个实现可以很好地处理 LRU 缓存,因为它能够在 O(1) 时间内进行 get 和 put 操作,而不需要对整个缓存进行扫描。同时,由于使用了 Map 来存储键值对,因此它能够保持键值对的插入顺序,方便我们找到最久未使用的键。展开评论1
![[打哈欠]](http://lf-web-assets.juejin.cn/obj/juejin-web/xitu_juejin_web/img/jj_emoji_44.74cc36f.png)
![[流泪]](http://lf-web-assets.juejin.cn/obj/juejin-web/xitu_juejin_web/img/jj_emoji_6.dde0d83.png)
![[呲牙]](http://lf-web-assets.juejin.cn/obj/juejin-web/xitu_juejin_web/img/jj_emoji_2.cd1e2bd.png)
![[惊恐]](http://lf-web-assets.juejin.cn/obj/juejin-web/xitu_juejin_web/img/jj_emoji_83.bc66012.png)