(๑•͈ᴗ•͈)❀送花给你

leetcode:包含min函数的栈

原题以及解法:https://leetcode-cn.com/problems/bao-han-minhan-shu-de-zhan-lcof/solution/offer30bao-han-minhan-shu-de-zhan-by-log-a6vx/

class MinStack(object):

    def __init__(self):
        """
        initialize your data structure here.
        """
        self.stack=[]
        self.minlist=[]


    def push(self, x):
        """
        :type x: int
        :rtype: None
        """
        self.stack.append(x)
        if(len(self.minlist)==0):
            self.minlist.append(x)
            return
        key = x
        j = len(self.minlist)-1
        self.minlist.append(0)
        while j >= 0 and key > self.minlist[j]:
            self.minlist[j + 1] = self.minlist[j]
            j -= 1
        self.minlist[j + 1] = key


    def pop(self):
        """
        :rtype: None
        """
        if len(self.stack) == 0:
            return -1
        tmp=self.stack[len(self.stack)-1]
        del self.stack[len(self.stack)-1]
        self.minlist.remove(tmp)
        return  tmp


    def top(self):
        """
        :rtype: int
        """
        if len(self.stack) == 0:
            return -1
        tmp=self.stack[len(self.stack)-1]
        return  tmp


    def min(self):
        """
        :rtype: int
        """
        if len(self.minlist) !=0:
            return self.minlist[len(self.minlist)-1]
        return -1
posted @ 2021-10-24 10:29  胸前小红花  阅读(25)  评论(0)    收藏  举报