LeetCode系列 高效率實現LFU

2021-10-09 22:42:55 字數 1183 閱讀 5078

lfu(least frequently used,最近最少使用演算法),一種常見的快取演算法。

思想:如果乙個資料在最近一段時間很少被訪問到,那麼可以認為在將來它被訪問的可能性也很小。因此,當空間滿時,最小頻率訪問的資料最先被淘汰。

lfu演算法描述:

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

演算法實現:

};//雙向鍊錶,帶頭尾節點

struct doublelist

void updatesort(node* node)

node->prev->next=node->next; //node->prevnodenode->next

node->next->prev=node->prev; //node->prevnode->next

node->next=pre->next; //prepre->next

pre->next->prev=node;

node->prev=pre;

pre->next=node; //prenodepre->next

}void addtolast(node* node)

int removetail()

};struct lfucache

int get(int key)

void put(int key,int value)

int size=hash.size();

if(size==capacity)

auto node=new node(key,value);

dl->addtolast(node);

dl->updatesort(node);

hash[key]=node;

}};int main()

高效率秘籍

高效率秘籍1 能量管理 假如今天透支身體數小時,下週你可能要為此償還更多的時間。良好的能量管理有兩步 1 增加你的能量儲備。2 將你的日程表由線性的改為迴圈式的。能量儲備 1 每週有3 5次運動嗎?如果你的回答為否,你正在削弱你的潛在能量水平,除非你的醫生不讓你參加運動,否則最少每天要抽出40分鐘來...

高效率生活

如何高效率生活 我們經常會想,為什麼我天天很努力的工作可是工作還是幹不完,如何才能高效率的工作和學習呢?我想這裡有過一些想法和經驗 經驗2 完成乙個事情再休息。因為人腦和電腦很像,乙個東西只有有了結果之後,再次回想時候才能有用,每個東西都要歸根到乙個節點上,乙個完結的點之後才能由這個點拓展開來,就和...

遮蔽字的實現(高效率)

select message replace message,shieldname,left len shieldname from tblshieldinfo nolock where shieldstatus t insert into remark info movieid,remarkid,...