【LintCode】MinStack

题目链接:http://www.lintcode.com/zh-cn/problem/min-stack/

题目:
实现一个带有取最小值min方法的栈,min方法将返回当前栈中的最小值。
你实现的栈将支持push,pop 和 min 操作,所有操作要求都在O(1)时间内完成。

思路:
easy

解法:

class MinStack(object):
    min_stack = []
    data_stack = []

    def __init__(self):
        pass

    def push(self, number):
        if (self.min_stack.__len__() == 0 or (self.min_stack[-1] >= number)):
            self.min_stack.append(number)
        self.data_stack.append(number)

    def pop(self):
        num = self.data_stack.pop()
        if (num == self.min_stack[-1]):
            self.min_stack.pop()
        return num

    def min(self):
        return self.min_stack[-1]

你可能感兴趣的:(ACM)