diff --git a/NeetCodeRoadmap/Stack/155_Min_Stack.py b/NeetCodeRoadmap/Stack/155_Min_Stack.py index 118c22a..370227b 100644 --- a/NeetCodeRoadmap/Stack/155_Min_Stack.py +++ b/NeetCodeRoadmap/Stack/155_Min_Stack.py @@ -1,53 +1,38 @@ class MinStack(object): - def __init__(self): - self.st=[] #stack - self.min=None #min element + self.stack = [] def push(self, val): - """ - :type val: int - :rtype: None - """ - if len(self.st)==0: - self.st.append(val) - self.min=val + if not self.stack: + self.stack.append((val, val)) else: - if val>=self.min: - self.st.append(val) - else: - self.st.append(2*val-self.min) - self.min=val + mn = min(self.stack[-1][1], val) + self.stack.append((val, mn)) + print(self.stack) def pop(self): - """ - :rtype: None - """ - x=self.st.pop() - if x=self.min: - return x - return self.min - + if self.stack: + print(self.stack) + return self.stack[-1][0] + return 0 def getMin(self): - """ - :rtype: int - """ - return self.min + if self.stack: + print(self.stack) + return self.stack[-1][1] + return 0 minStack = MinStack() minStack.push(-2) minStack.push(0) minStack.push(-3) +minStack.push(4) minStack.getMin() # return -3 minStack.pop() minStack.top() # return 0