包含min操作的栈

MinStack.java

import java.util.ArrayDeque;
import java.util.Deque;

public class MinStack<T extends Comparable<T>> {

  private Deque<CustomElem<T>> mDeque = new ArrayDeque<>();
  private T mMinElem = null;

  public void push(T t) {
    CustomElem<T> elem = new CustomElem<>();
    elem.mValue = t;
    if (mMinElem == null) {
      mMinElem = t;
    }
    if (mMinElem.compareTo(t) <= 0) {
      elem.minElem = mMinElem;
    } else {
      elem.minElem = t;
      mMinElem = t;
    }
    mDeque.push(elem);
  }
  
  public T min(){
    CustomElem<T> elem = mDeque.getFirst();
    return elem.minElem;
  }
  
  public void pop(){
    mDeque.removeFirst();
  }
  
  class CustomElem<T> {
    T mValue;
    T minElem;
  }

}

MinStackTest.java

public class MinStackTest {
  
  public static void main(String[] args) {
    MinStack<Integer> myStack = new MinStack<>();
    myStack.push(4);
    myStack.push(3);
    myStack.push(5);
    myStack.push(1);
    System.out.println(myStack.min());
    myStack.pop();
    System.out.println(myStack.min());
  }

}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值