LeetCode : 155. Min Stack 最小栈

试题
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.
Example:
MinStack minStack = new MinStack();
minStack.push(-2);
minStack.push(0);
minStack.push(-3);
minStack.getMin(); --> Returns -3.
minStack.pop();
minStack.top(); --> Returns 0.
minStack.getMin(); --> Returns -2.

代码
用两个栈来存储数据,一个存储最小值。注意比较值时使用equal。

class MinStack {

/** initialize your data structure here. */
Stack<Integer> sta,min;
public MinStack() {
    sta = new Stack<>();
    min = new Stack<>();
}

public void push(int x) {
    if(min.isEmpty() || min.peek()>=x){
        min.push(x);
    }
    sta.push(x);
}

public void pop() {
    if(sta.peek().equals(min.peek())){
        min.pop();
    }
    sta.pop();
}

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

public int getMin() {
    return min.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();
    */
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值