summaryrefslogtreecommitdiff
path: root/2020
diff options
context:
space:
mode:
authormo khan <mo.khan@gmail.com>2020-08-22 15:41:10 -0600
committermo khan <mo.khan@gmail.com>2020-08-22 15:41:10 -0600
commit0dd668fede0ab95f225b3e8ee068f6f908748fd2 (patch)
treef81caceb5d8e95e25a5d3a0cb06470103fafbd86 /2020
parent8b56ea944de3ae79dbf7c7badfda7434cdf3a5df (diff)
Keep track of each new max
Diffstat (limited to '2020')
-rw-r--r--2020/08/22/main.rb12
1 files changed, 10 insertions, 2 deletions
diff --git a/2020/08/22/main.rb b/2020/08/22/main.rb
index 6042464..dc27bc7 100644
--- a/2020/08/22/main.rb
+++ b/2020/08/22/main.rb
@@ -5,18 +5,26 @@ end
class MaxStack
def initialize
@items = []
+ @maxes = []
end
def push(value)
+ if @maxes.empty? || value > @maxes[-1]
+ @maxes.push(value)
+ end
@items.push(value)
end
def pop
- @items.pop
+ result = @items.pop
+ @maxes.pop if result == @maxes[-1]
+ result
end
+ # time: O(1)
+ # space: O(1)
def max
- @items.max
+ @maxes[-1]
end
end