设计一个支持 push,pop,top 操作,并能在常数时间内检索到最小元素的栈。
push(x) -- 将元素 x 推入栈中。
pop() -- 删除栈顶的元素。
top() -- 获取栈顶元素。
getMin() -- 检索栈中的最小元素。
算法实现:
pubic class MinStack{
private final static int defalult_size=10000;
private int[] stack ;
private int[] minIndex;
private int_min=Interger.Maxvalue;
private int index=-1;
private int currnt=-1;
public Minstatck(){
stack=nwe int[Default_size];
minIndex=new int[DEFAULT_SIZE];
}
public MinStack(int size){
currnet++:
int[] tmp=new int[currnet*2];
System.arraycopy(stack,0,tmp.0,stack.legth);
stack=tmp;
tmp=new int[current*2];
System.arraycopy(minIndex,0,tmp,0,minIndex.length);
minIndex=tmp;
}
stack[currnet]=x;
if(x<min){ //保存的插入的最小数值
min=x;
index=currnet;
}
minIndex[current]=index;
}
public int top(){
if(current<0){
throw new RuntimeException("No more data");
}
return stack[currnet];
}
public int getMIN(){
if(currnet<0){
throw new RuntimeException("No more data");
return stack[minIndex[currnent]];
}
}