kswang2400/data-struct

View on GitHub
lib/min_max_stack.rb

Summary

Maintainability
A
0 mins
Test Coverage
class MinMaxStack
  attr_reader :store

  def initialize
    @store = []
  end

  def length
    @store.length
  end

  def max
    @store.empty? ? nil : @store[-1][2]
  end

  def min
    @store.empty? ? nil : @store[-1][1]
  end

  def pop
    val, _ = @store.pop

    val
  end

  def push(val)
    if @store.empty?
      @store << [val, val, val]
    else
      @store << [val, [self.min, val].min, [self.max, val].max]
    end
  end
end