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

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

Design and implement a data structure for Least Recently Used (LRU) cache. It should support the following operations: get and set.

  • get(key) - Get the value (will always be positive) of the key if the

    key exists in the cache, otherwise return -1.

  • set(key, value) - Set or insert the value if the key is not already present. When the cache reached its capacity, it should invalidate the least recently used item before inserting a new item.

class LRUCache{public:    LRUCache(int capacity)     {         m_cache.clear();         m_time2key.clear();         m_key2time.clear();         m_capacity = capacity;         m_time = 0;         m_size = 0;    }    int get(int key)    {        m_time ++;        map
::iterator it = m_cache.find(key); if(it != m_cache.end() ) { m_time2key.erase(m_key2time[key]); m_time2key.insert(std::make_pair(m_time, key)); m_key2time[key] = m_time; return m_cache[key]; } return -1; } void set(int key, int value) { m_time++; map
::iterator it = m_cache.find(key); if(it != m_cache.end()) { m_cache[key] = value; m_time2key.insert(std::make_pair(m_time, key)); m_time2key.erase(m_key2time[key]); m_key2time[key] = m_time; } else { if(m_size == m_capacity) { map
::iterator it = m_time2key.begin(); m_cache.erase(it->second); m_time2key.erase(it->first); m_key2time.erase(it->second); m_size--; } m_cache.insert(std::make_pair(key, value)); m_time2key.insert(std::make_pair(m_time, key)); m_key2time.insert(std::make_pair(key, m_time)); m_size++; } }private: map
m_cache; long long m_time; map
m_time2key; map
m_key2time; int m_capacity; int m_size;};

转载地址:http://nebja.baihongyu.com/

你可能感兴趣的文章
axios 拦截 , 页面跳转, token 验证
查看>>
Windows XP硬盘安装Ubuntu 12.04双系统图文详解
查看>>
Last Position of Target
查看>>
和我一起来学iOS(一)ObjectC的语法
查看>>
php_bu
查看>>
一轮项目冲刺3
查看>>
DDL语句--改动表
查看>>
javaEE之------ApectJ的切面技术===标签
查看>>
js 获取昨天,今天和明天的年月日格式
查看>>
中枢理论3
查看>>
BootStrap使用
查看>>
关于svn上传.classpath等问题
查看>>
妹子图-mysql
查看>>
谈谈地理坐标和投影坐标
查看>>
关于bat文件语法
查看>>
[原创] Ubuntu Linux 安装Eclipse
查看>>
n边形面积
查看>>
python字符串--常见操作
查看>>
docker网络之overlay
查看>>
hdu1709
查看>>