java 包含min函数的栈,AcWing 41. 【java】包含min函数的栈

【工程化思路】

因为栈是先进后出的,可以用另一个栈来维护栈的最小值

所以只考虑入栈出栈两种情况

入栈时,x比当前最小值小的时候,min栈将x压入,更新最小值

出栈时,如果min顶的值与栈顶值相同,说明这个值不在栈中,需要弹出

【边界条件】

1. 栈为空的时候

2. 弹出最小值的时候

【注意事项】

注意不用import java.util.Stack; 不然会报错

python 切过来又忘记写分号了。。。。。。

java类内要先声明, 尽量用private

class MinStack {

private Stack stack;

private Stack 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
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值