题解 | #设计LRU缓存结构#
设计LRU缓存结构
http://www.nowcoder.com/practice/e3769a5f49894d49b871c09cadd13a61
C++
能过但是复杂度超了
class Solution {
public:
/**
* lru design
* @param operators int整型vector<vector<>> the ops
* @param k int整型 the k
* @return int整型vector
*/
vector<pair<int,int>> lruMap;
void Set(int key,int value,int k)
{
if(lruMap.size() >= k)
{
lruMap.erase(lruMap.begin());
}
for(auto& i : lruMap)
{
if(i.first == key)
{
i.second = value;
return;
}
}
lruMap.push_back(make_pair(key, value));
return;
}
int Get(int key)
{
for(auto i = lruMap.begin();i!=lruMap.end();++i)
{
if(i->first == key)
{
pair<int,int> p{i->first,i->second};
lruMap.erase(i);
lruMap.push_back(p);
return p.second;
}
}
return -1;
}
vector<int> LRU(vector<vector<int> >& operators, int k)
{
vector<int> res;
for(auto i : operators)
{
if(i[0] == 1)
{
Set(i[1],i[2],k);
}
if(i[0]==2)
{
res.push_back(Get(i[1]));
}
}
return res;
}
};