From 7635cc995d2a9f711916f3da84e7a6e556591646 Mon Sep 17 00:00:00 2001 From: Narbe Voskanian Date: Sat, 22 Oct 2022 20:24:37 -0700 Subject: [PATCH 1/2] Create 0146-LRU-Cache.rb --- ruby/0146-LRU-Cache.rb | 74 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 74 insertions(+) create mode 100644 ruby/0146-LRU-Cache.rb diff --git a/ruby/0146-LRU-Cache.rb b/ruby/0146-LRU-Cache.rb new file mode 100644 index 000000000..c87160eda --- /dev/null +++ b/ruby/0146-LRU-Cache.rb @@ -0,0 +1,74 @@ +class LRUCache + +=begin + :type capacity: Integer +=end + def initialize(capacity) + @capacity = capacity + @cache = {} + @l = Node.new() + @r = Node.new() + @l.next = @r + @r.prev = @l + end + + +=begin + :type key: Integer + :rtype: Integer +=end + def get(key) + return -1 unless @cache.key?(key) + + remove(@cache[key]) + insert(@cache[key]) + @cache[key].value + end + + +=begin + :type key: Integer + :type value: Integer + :rtype: Void +=end + def put(key, value) + remove(@cache[key]) if @cache.key?(key) + + @cache[key] = Node.new(key, value) + insert(@cache[key]) + evict if @capacity < @cache.size + end + + private + def remove(node) + prev = node.prev + nxt = node.next + + prev.next = nxt + nxt.prev = prev + end + + def insert(node) + prev = @r.prev + prev.next = node + @r.prev = node + + node.prev = prev + node.next = @r + end + + def evict + lru = @l.next + remove(lru) + @cache.delete(lru.key) + end + + class Node + attr_accessor :value, :prev, :next, :key + + def initialize(key = 0, val = nil) + self.value = val + self.key = key + end + end +end From 587e10811284f8628cfa573174aed3bd2f49cf09 Mon Sep 17 00:00:00 2001 From: aa0 <71089234+Ahmad-A0@users.noreply.github.com> Date: Wed, 2 Nov 2022 22:34:49 +0000 Subject: [PATCH 2/2] Rename 0146-LRU-Cache.rb to 146-LRU-Cache.rb --- ruby/{0146-LRU-Cache.rb => 146-LRU-Cache.rb} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename ruby/{0146-LRU-Cache.rb => 146-LRU-Cache.rb} (100%) diff --git a/ruby/0146-LRU-Cache.rb b/ruby/146-LRU-Cache.rb similarity index 100% rename from ruby/0146-LRU-Cache.rb rename to ruby/146-LRU-Cache.rb pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy