Skip to content

Instantly share code, notes, and snippets.

@joxer
Created May 3, 2019 15:04
Show Gist options
  • Save joxer/9d65c0339fbd166735e6f40d249c2110 to your computer and use it in GitHub Desktop.
Save joxer/9d65c0339fbd166735e6f40d249c2110 to your computer and use it in GitHub Desktop.
# minimum in stack
class Node:
value = None
next = None
def __init__(self, value, next=None):
self.value = value
self.next = next
class MinStack:
_min = None
_int_stack = list()
def push(self, value):
if self._min == None:
self._int_stack.append([value, None])
self._min = value
elif self._min != None and value > self._min:
self._int_stack.append([value, self._min])
elif self._min != None and value < self._min:
self._int_stack.append([value, self._min])
self._min = value
def pop(self):
if len(self._int_stack) == 0:
return None
last = self._int_stack.pop()
if(last[0] == self._min):
self._min = last[1]
return last[0]
def minimum(self):
return self._min
cl = MinStack()
cl.push(3)
cl.push(5)
cl.push(1)
cl.push(9)
cl.push(24)
cl.push(-4)
cl.push(4)
print(99,cl.pop())
print(cl.minimum())
print(99,cl.pop())
print(cl.minimum())
print(99,cl.pop())
print(cl.minimum())
print(99,cl.pop())
print(cl.minimum())
print(99,cl.pop())
print(cl.minimum())
print(99,cl.pop())
print(cl.minimum())
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment