最强解析面试题: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算法的主要内容,如果未能解决你的问题,请参考以下文章

最强解析面试题:Goland 消费生产模式实现

最强解析面试题:Goland 循环队列实现

最强解析面试题:Goland 消费生产模式实现

最强解析面试题:Goland 并发版斐波那契数列

最强解析面试题:Goland 并发版斐波那契数列

LinkedHashMap实现LRU算法--高频面试题