class Solution { public: /** * lru design * @param operators int整型vector<vector<>> the ops * @param k int整型 the k * @return int整型vector */ map<int, int> cache; list<int> li; vector<int> ret; int len = 0; vector<int> LRU(vector<vector<int> >& operators, int k) { // write code here len = k; for (auto &ele : operators) { if (ele[0] == 1) { set(ele[1], ele[2]); } else { get(ele[1]); } } return ret; } void set(int k, int v) { auto iter = cache.find(k); if (iter != cache.end()) { li.remove(k); li.push_front(k); cache[k] = v; } else { if (cache.size() >= len) { cache.erase(cache.find(li.back())); li.pop_back(); } li.push_front(k); cache[k] = v; } } void get(int k) { auto iter = cache.find(k); if (iter != cache.end()) { int v = iter->second; li.remove(k); li.push_front(k); ret.push_back(v); } else { ret.push_back(-1); } } };