leetcode-155-最小栈

题目描述:

方法一:辅助栈

class MinStack:

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

    def push(self, x: int) -> None:
        self.stack.append(x)
        if not self.min_stack or x <= self.min_stack[-1]:
            self.min_stack.append(x)
    def pop(self) -> None:
        if self.stack[-1] == self.min_stack[-1]:
            self.min_stack.pop()
        self.stack.pop()
         
    def top(self) -> int:
        return self.stack[-1]
        

    def getMin(self) -> int:
        if not self.min_stack:
            return None
        return self.min_stack[-1]

 另:(更快)

class MinStack:

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

    def push(self, x: int) -> None:
        self.curStack.append(x)
        if len(self.minStack) == 0:
            self.minStack.append(x)
        elif x < self.minStack[-1]:
            self.minStack.append(x)
        else:
            self.minStack.append(self.minStack[-1])

    def pop(self) -> None:
        self.curStack.pop()
        self.minStack.pop()

    def top(self) -> int:
        return self.curStack[-1]

    def getMin(self) -> int:
        return self.minStack[-1]

 java:

class MinStack {
    private Stack<Integer> stack;
    private Stack<Integer> minStack;

    /** initialize your data structure here. */
    public MinStack() {
        stack = new Stack<>();
        minStack = new Stack<>();

    }
    
    public void push(int x) {
        stack.push(x);
        if(!minStack.isEmpty()){
            int top = minStack.peek();
            if(x <= top) minStack.push(x);
        }else{
            minStack.push(x);
        }

    }
    
    public void pop() {
        int pop = stack.pop();
        int top = minStack.peek();
        if(pop == top){
            minStack.pop();
        }

    }
    
    public int top() {
        return stack.peek();

    }
    
    public int getMin() {
        return minStack.peek();

    }
}

 

posted @ 2019-07-18 10:57  oldby  阅读(158)  评论(0编辑  收藏  举报