博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
LeetCode 146. LRU Cache
阅读量:5935 次
发布时间:2019-06-19

本文共 1118 字,大约阅读时间需要 3 分钟。

高频题,需要用unordered_map和list,做到O(1)

需要注意的一点是,list用了splice改变了节点的位置,但是iterator并不会失效,这也代表unordered_map不需要进行更新。(可以把iterator当成指针方便理解)

class LRUCache {public:    int cap;    // recent visit will be moved to the head    list
> l; // pair(key,val) unordered_map
>::iterator> m; // key -> iterator in list LRUCache(int capacity) { cap = capacity; } int get(int key) { if (!m.count(key)) return -1; int res=(*m[key]).second; l.splice(l.begin(), l, m[key]); //move key to the first return res; } void put(int key, int value) { if (m.count(key)) l.erase(m[key]); l.push_front(make_pair(key,value)); m[key] = l.begin(); if (l.size()>cap){ m.erase(l.back().first); l.pop_back(); } }};/** * Your LRUCache object will be instantiated and called as such: * LRUCache obj = new LRUCache(capacity); * int param_1 = obj.get(key); * obj.put(key,value); */

 

转载于:https://www.cnblogs.com/hankunyan/p/9894042.html

你可能感兴趣的文章
我不是一名UX设计师,你也不是
查看>>
如何使用RPM
查看>>
兼容所有浏览器的复制到剪切板功能,悬浮层不能复制问题解决
查看>>
DNS转发功能
查看>>
读《软件随想录》
查看>>
linux
查看>>
如何正确提高DB2数据备份和恢复的效率
查看>>
对未来Google搜索技术的深度分析转载
查看>>
ubuntu 基础环境
查看>>
redis安装
查看>>
Highcharts JS插件(折线图)
查看>>
Swift2.0(17)泛型技术
查看>>
Shell图形化监控网络流量
查看>>
Wiwiz进阶设置-标准版实现免认证有线连接
查看>>
ubuntu上pip安装
查看>>
迁移NIS/NFS服务器的处理步骤
查看>>
Normalization – NF1, NF2, NF3. How to normalize your database?
查看>>
实战 MDT 2012(一)---工具准备
查看>>
配置Linux阿里镜像源
查看>>
网站排障分析常用的命令
查看>>