class MinStack(object): def __init__(self): self.st=[] #stack self.min=None #min element def push(self, val): """ :type val: int :rtype: None """ if len(self.st)==0: self.st.append(val) self.min=val else: if val>=self.min: self.st.append(val) else: self.st.append(2*val-self.min) self.min=val def pop(self): """ :rtype: None """ x=self.st.pop() if x=self.min: return x return self.min def getMin(self): """ :rtype: int """ return self.min minStack = MinStack() minStack.push(-2) minStack.push(0) minStack.push(-3) minStack.getMin() # return -3 minStack.pop() minStack.top() # return 0 minStack.getMin() # return -2 # Your MinStack object will be instantiated and called as such: # obj = MinStack() # obj.push(val) # obj.pop() # param_3 = obj.top() # param_4 = obj.getMin()