@@ -0,0 +1,1356 @@
+class MinStack(object):%0A    def __init__(self):%0A        %22%22%22%0A        initialize your data structure here.%0A        %22%22%22%0A        self._s = %5B%5D%0A        self.t = len(self._s)-1%0A        self.curMin = 2147483647%0A    def push(self, x):%0A        %22%22%22%0A        :type x: int%0A        :rtype: nothing%0A        %22%22%22%0A        self.curMin = x if x %3C self.curMin else self.curMin%0A        if self.t %3C len(self._s)-1 and len(self._s)%3E0:%0A            self._s%5Bself.t+1%5D = %5Bx,self.curMin%5D%0A        else:%0A            self._s.append(%5Bx,self.curMin%5D)%0A        self.t += 1%0A%0A    def pop(self):%0A        %22%22%22%0A        :rtype: nothing%0A        %22%22%22%0A        p = self._s%5Bself.t%5D%5B0%5D%0A        self.t -= 1%0A        self.curMin = 2147483647 if self.t == -1 else self._s%5Bself.t%5D%5B1%5D%0A        # print %22t=%22,self.t,%22self.curMin=%22,self.curMin%0A        return p%0A        %0A%0A    def top(self):%0A        %22%22%22%0A        :rtype: int%0A        %22%22%22%0A        return self._s%5Bself.t%5D%5B0%5D%0A        %0A%0A    def getMin(self):%0A        %22%22%22%0A        :rtype: int%0A        %22%22%22%0A        return self._s%5Bself.t%5D%5B1%5D%0A%0A    def getStack(self):%0A        return self._s%5B:self.t+1%5D%0A%0A%0Aif __name__ == '__main__':%0A    stack = MinStack()%0A    stack.push(2147483646)%0A    stack.push(2147483645)%0A    stack.push(2147483647)%0A    stack.pop()%0A    stack.pop()%0A    stack.pop()%0A    stack.push(2147483647)%0A    stack.push(-2147483648)%0A    stack.pop()%0A    print stack.getMin()%0A%0A%0A%0A

Add solution for 155 min stack. (tooooooo slow)