Day36.最小栈

题目描述:

设计一个支持 push,pop,top 操作,并能在常数时间内检索到最小元素的栈。
push(x) – 将元素 x 推入栈中。
pop() – 删除栈顶的元素。
top() – 获取栈顶元素。
getMin() – 检索栈中的最小元素。

示例:

MinStack minStack = new MinStack();
minStack.push(-2);
minStack.push(0);
minStack.push(-3);
minStack.getMin();   --> 返回 -3.
minStack.pop();
minStack.top();      --> 返回 0.
minStack.getMin();   --> 返回 -2.

代码如下:

class MinStack(object):

    def __init__(self):
        """
        initialize your data structure here.
        """
        self.fir = []
        self.sec = []
        
    def push(self, x):
        """
        :type x: int
        :rtype: None
        """
        self.fir.append(x)
        if not self.sec or x <= self.sec[-1]:
            self.sec.append(x)
            
    def pop(self):
        """
        :rtype: None
        """
        if self.fir:
            if self.sec[-1] == self.fir[-1]:
                self.sec.pop()
            self.fir.pop()
            
    def top(self):
        """
        :rtype: int
        """
        if self.fir:
            return self.fir[-1]
            
    def getMin(self):
        """
        :rtype: int
        """
        if self.fir:
            return self.sec[-1]

在这里插入图片描述

发布了71 篇原创文章 · 获赞 4 · 访问量 1099

猜你喜欢

转载自blog.csdn.net/qq_44957388/article/details/101752151