最强解析面试题:Goland 实现LRU算法
Posted 魏小言
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了最强解析面试题:Goland 实现LRU算法相关的知识,希望对你有一定的参考价值。
文章目录
最强解析面试题:Goland 实现LRU算法
文章讲解 “ Goland 实现LRU算法 ” 经典面试题,包含思路及源码,及解惑!
题目
Goland实现LRU算法
更多细节请关注 公众号 “ code 杂坛“!
思路
利用 goland 原生 container 包中的双向链表,最小代码量的实现 LRU ,更多细节请关注 公众号 “ code 杂坛“!
代码
container/list
type entry struct
K interface
V interface
type lru struct
s int
l *list.List
m map[interface]*list.Element
func NewLru(s int) *lru
return &lru
s: s,
l: list.New(),
m: make(map[interface]*list.Element, s),
func (l *lru) Get(k interface) (interface, bool)
if v, ok := l.m[k]; ok
l.l.MoveToFront(v)
return v.Value.(*entry).V, true
return nil, false
func (l *lru) Push(key, value interface)
if v, ok := l.m[key]; ok
v.Value.(*entry).V = value
l.l.MoveToFront(v)
return
if l.l.Len() >= l.s
last := l.l.Back()
l.l.Remove(last)
e := l.l.PushFront(&entrykey, value)
l.m[key] = e
return
附录
更多细节请关注 公众号 “ code 杂坛“!
以上是关于最强解析面试题:Goland 实现LRU算法的主要内容,如果未能解决你的问题,请参考以下文章