Skip to content

Commit 8acaf93

Browse files
committed
updated 146 solution
1 parent ea4ea9e commit 8acaf93

File tree

2 files changed

+53
-0
lines changed

2 files changed

+53
-0
lines changed

0146-lru-cache-stl.cpp

+50
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
/*
2+
146. LRU Cache
3+
4+
Submitted: December 21, 2024
5+
6+
Runtime: 71 ms (beats 78.21%)
7+
Memory: 182.15 MB (beats 27.80%)
8+
*/
9+
10+
class LRUCache {
11+
private:
12+
const int capacity;
13+
unordered_map<int, list<pair<int, int>>::iterator> map;
14+
list<pair<int, int>> list;
15+
public:
16+
LRUCache(int capacity) : capacity(capacity) {}
17+
18+
int get(int key) {
19+
if (map.count(key)) {
20+
int val = (*map[key]).second;
21+
list.erase(map[key]);
22+
list.push_front({ key, val });
23+
map[key] = list.begin();
24+
return val;
25+
}
26+
return -1;
27+
}
28+
29+
void put(int key, int value) {
30+
if (map.count(key)) {
31+
list.erase(map[key]);
32+
list.push_front({ key, value });
33+
map[key] = list.begin();
34+
} else {
35+
if (list.size() == capacity) {
36+
map.erase(list.back().first);
37+
list.pop_back();
38+
}
39+
list.push_front({ key, value });
40+
map[key] = list.begin();
41+
}
42+
}
43+
};
44+
45+
/**
46+
* Your LRUCache object will be instantiated and called as such:
47+
* LRUCache* obj = new LRUCache(capacity);
48+
* int param_1 = obj->get(key);
49+
* obj->put(key,value);
50+
*/

0146-lru-cache.cpp

+3
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,9 @@ Submitted: November 30, 2024
55
66
Runtime: 67 ms (beats 85.54%)
77
Memory: 173.16 MB (beats 55.15%)
8+
9+
A solution for this problem using the std::list class rather than a custom
10+
LinkedList class is contained within `0146-lru-cache-stl.cpp`.
811
*/
912

1013
class LinkedList {

0 commit comments

Comments
 (0)