Leetcode: Min Stack

来源:互联网 发布:双色球绝密算法 编辑:程序博客网 时间:2024/06/01 08:53

Question

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.


Solution

Analysis

refer to here.
Great Idea !

class MinStack(object):    def __init__(self):        """        initialize your data structure here.        """        self.stack, self.minstack = [], []    def push(self, x):        """        :type x: int        :rtype: nothing        """        self.stack.append(x)        if self.minstack==[] or self.minstack[-1]>=x:            self.minstack.append(x)    def pop(self):        """        :rtype: nothing        """        if self.stack!=[]:            elem = self.stack[-1]            self.stack = self.stack[0:-1]            if self.minstack!=[] and elem==self.minstack[-1]:                self.minstack = self.minstack[0:-1]    def top(self):        """        :rtype: int        """        if self.stack!=[]:            return self.stack[-1]        else:            return None    def getMin(self):        """        :rtype: int        """        if self.minstack!=[]:            return self.minstack[-1]        else:            return None
0 0
原创粉丝点击