【每日一题】2022年1月3日-155. 最小栈

设计一个支持 push ,pop ,top 操作,并能在常数时间内检索到最小元素的栈。

push(x) —— 将元素 x 推入栈中。
pop() —— 删除栈顶的元素。
top() —— 获取栈顶元素。
getMin() —— 检索栈中的最小元素。

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/min-stack
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

 

 答案:

class MinStack {
    Stack<Integer> stack;
    public MinStack() {
        stack = new Stack<>();
    }
    
    public void push(int val) {
        if(stack.isEmpty()) {
            stack.push(val);
            stack.push(val);
        } else {
            int value = stack.peek();
            //stack.pop();--不能将栈顶的最小元素出栈,因为要出栈两次
            stack.push(val);
            if(value >= val) {
                stack.push(val);
            } else {
                stack.push(value);
            }
        }
    }
    
    public void pop() {
        stack.pop();
        stack.pop();
    }
    
    public int top() {
        return stack.get(stack.size() - 2);
    }
    
    public int getMin() {
        return stack.get(stack.size() - 1);
    }
}

/**
 * Your MinStack object will be instantiated and called as such:
 * MinStack obj = new MinStack();
 * obj.push(val);
 * obj.pop();
 * int param_3 = obj.top();
 * int param_4 = obj.getMin();
 */

 

posted @ 2022-01-03 20:29  哥们要飞  阅读(23)  评论(0编辑  收藏  举报