支持min()方法的栈,这种方法相对比较省空间。
import java.util.Random;
import java.util.Stack;
public class StackWithMin extends Stack<Integer> {
Stack<Integer> stack;
public StackWithMin(){
stack=new Stack<Integer>();
}
public void push(int value){
if(value<=min()){
stack.push(value);
}
super.push(value);
}
public Integer pop(){
int value=super.pop();
if(value==min()){
stack.pop();
}
return value;
}
public int min(){
if(stack.empty()){
return Integer.MAX_VALUE;
}
else{
return stack.peek();
}
}
public static void main(String[] args) {
StackWithMin sWithMin=new StackWithMin();
for(int i=0;i<10;i++){
Random random=new Random();
int n=random.nextInt()%100;
System.out.print(n+" ");
sWithMin.push(n);
}
System.out.println();
for(int i=0;i<10;i++){
System.out.print(sWithMin.min()+" ");
sWithMin.pop();
}
}
}
/*output example
9 -55 36 -15 0 -89 9 -67 33 -99
-99 -89 -89 -89 -89 -55 -55 -55 -55 9 */