AcWing
  • 首页
  • 题库
  • 题解
  • 分享
  • 问答
  • 活动
  • 应用
  • 吐槽
  • 登录/注册

AcWing 41. 【java】包含min函数的栈    原题链接    简单

作者: 作者的头像   tt2767 ,  2019-12-02 22:45:07 ,  阅读 258


0


【工程化思路】
因为栈是先进后出的,可以用另一个栈来维护栈的最小值
所以只考虑入栈出栈两种情况
入栈时,x比当前最小值小的时候,min栈将x压入,更新最小值
出栈时,如果min顶的值与栈顶值相同,说明这个值不在栈中,需要弹出

【边界条件】
1. 栈为空的时候
2. 弹出最小值的时候

【注意事项】

  1. 注意不用import java.util.Stack; 不然会报错
  2. python 切过来又忘记写分号了。。。。。。
  3. java类内要先声明, 尽量用private
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) {
        if (minStack.empty() || x < minStack.peek()){
            minStack.push(x);
        }
        stack.push(x);
    }

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

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

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

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

0 评论

你确定删除吗?

© 2018-2021 AcWing 版权所有  |  京ICP备17053197号-1
联系我们  |  常见问题
AcWing
请输入登录信息
更多登录方式: 微信图标 qq图标
请输入绑定的邮箱地址
请输入注册信息