Design a stack that supports push, pop, top, and retrieving the minimum element in constant time.
- push(x) -- Push element x onto stack.
- pop() -- Removes the element on top of the stack.
- top() -- Get the top element.
- getMin() -- Retrieve the minimum element in the stack.
Example:
MinStack minStack = new MinStack(); minStack.push(-2); minStack.push(0); minStack.push(-3); minStack.getMin(); --> Returns -3. minStack.pop(); minStack.top(); --> Returns 0. minStack.getMin(); --> Returns -2.
class MinStack(object):dataList = []def __init__(self):"""initialize your data structure here."""self.dataList = []def push(self, x):""":type x: int:rtype: void"""curMin = self.getMin()if curMin is None or x < curMin:curMin = xself.dataList.append([x,curMin])def pop(self):""":rtype: void"""self.dataList.pop()if len(self.dataList) is 0:self.curMin = Nonedef top(self):""":rtype: int"""if len(self.dataList) is 0:return Nonereturn self.dataList[-1][0]def getMin(self):""":rtype: int"""if len(self.dataList) is 0:return Nonereturn self.dataList[-1][1]# Your MinStack object will be instantiated and called as such:s = MinStack();s.push(0);s.push(1);s.push(0);s.getMin();s.pop();print(s.dataList)m = s.getMin();print(m)