注意:原来的stack栈不能pop修改,可以用一个新的栈,先存出去的元素,取到最小值后再放回原来的第一个栈
import java.util.Stack;
public class Solution {
Stack<Integer> stack1=new Stack<Integer>();
Stack<Integer> stack2=new Stack<Integer>();
public void push(int node) {
stack1.push(node);
}
public void pop() {
stack1.pop();
}
public int top() {
return stack1.peek();
}
public int min() {
int min=stack1.peek();
int temp;
//如果不为空
while(!stack1.empty()){
temp=stack1.pop();
if(temp<min)
min=temp;
stack2.push(temp);
}
//此时已经找到最小值,但是原来的stack1已经没有元素在栈里了,还原
while(!stack2.empty()){
stack1.push(stack2.pop());
}
return min;
}
}
第二种方法是iterator这样就不用pop了不过要导入包,
int min = stack.peek();
int temp=0;
Iterator<Integer> iterator = stack.iterator();
while (iterator.hasNext()){
temp= iterator.next();
if (temp<min)
min = temp;
}
return min;