設計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 ) intbreak
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 structtype 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發布六個月後推出。它的大部分變化都在於工具鏈,執行時...