From c6e8c5a8b0eb52c4d136ade99e6c115d7e196f60 Mon Sep 17 00:00:00 2001 From: hasksy Date: Fri, 4 Dec 2020 23:12:48 +0300 Subject: [PATCH] LEETCODE 2022 Added solution for lru-cache --- src/leetcode/design.md | 43 +++++++++++++++++++++++++++++++++++++++++- 1 file changed, 42 insertions(+), 1 deletion(-) diff --git a/src/leetcode/design.md b/src/leetcode/design.md index f936956..245b503 100644 --- a/src/leetcode/design.md +++ b/src/leetcode/design.md @@ -1 +1,42 @@ -# Design \ No newline at end of file +# Design + ++ [LRU Cache](#lru-cache) + +## LRU Cache +https://leetcode.com/problems/lru-cache/ +```java +class LRUCache { + private final LinkedHashMap cache = new LinkedHashMap<>(); + private final int capacity; + public LRUCache(int capacity) { + this.capacity = capacity; + } + + public int get(int key) { + if (!cache.containsKey(key)) { + return -1; + } + update(key); + return cache.get(key); + } + + public void put(int key, int value) { + if (cache.containsKey(key)) { + cache.put(key, value); + update(key); + return; + } + if (cache.size() >= this.capacity) { + int del = cache.keySet().iterator().next(); + cache.remove(del); + } + cache.put(key, value); + } + public void update(int key) { + int val = cache.get(key); + cache.remove(key); + cache.put(key, val); + } +} + +``` \ No newline at end of file