LRU問題 Go版本

2022-06-09 06:39:09 字數 1104 閱讀 3354

設計lru快取結構,該結構在構造時確定大小,假設大小為k,並有如下兩個功能

[要求]

set和get方法的時間複雜度為o(1)

某個key的set或get操作一旦發生,認為這個key的記錄成了最常使用的。

當快取的大小超過k時,移除最不經常使用的記錄,即set或get最久遠的。

若opt=1,接下來兩個整數x, y,表示set(x, y)

若opt=2,接下來乙個整數x,表示get(x),若x未出現過或已被移除,則返回-1

對於每個操作2,輸出乙個答案

版本一、

func lru( operators int ,  k int ) int 

break

case va[0] == 2 :

idx := -1

for i:=0;i版本二、

package main

/*** lru design

* @param operators int整型二維陣列 the ops

* @param k int整型 the k

* @return int整型一維陣列

*/

type listnode struct

type lrucache struct

func constructor(capacity int) lrucache

t := listnode

h.next = &t

t.pre = &h

lru := lrucache

return lru

}func (this *lrucache) push_front(cur *listnode)

func (this *lrucache)erase(cur *listnode)

func (this *lrucache) get(key int) int else

}func (this *lrucache) set(key int, val int)else

newnode := listnode

this.ma[key] = &newnode

this.push_front(&newnode)

}}

LRU演算法的GO語言實現

lru演算法原理,來自 1.假設我們使用雜湊鍊錶來快取使用者資訊,目前快取了4個使用者,這4個使用者是按照時間順序依次從鍊錶右端插入的 2.此時,業務方訪問使用者5,由於雜湊鍊錶中沒有使用者5的資料,我們從資料庫中讀取出來,插入到快取當中。這時候,鍊錶中最右端是最新訪問到的使用者5,最左端是最近最少...

go版本gRPC入門

本文通過乙個簡單的示例,了解如何在go中使用grpc。使用命令列安裝 使用以下命令安裝grpc go get google.golang.org grpc 獲取編譯器外掛程式protoc gen go,並將其安裝在 gobin路徑中,預設為 gopath bin。5 必須設定好 path環境變數,協...

Go 各版本特性

最新的go版本1.11版本在go 1.10之後六個月到達。它的大部分變化都在於工具鏈,執行時和庫的實現。與往常一樣,該版本保持了go 1 的相容性承諾。我們希望幾乎所有的go程式都能像以前一樣繼續編譯和執行。最新的go版本1.10版本在go 1.9發布六個月後推出。它的大部分變化都在於工具鏈,執行時...