2017.9.14
用两个栈就好了。
一个栈就是普普通通存储数据的栈。
一个栈里存放,push(number)之后,此时的最小值。
public class MinStack {
/*
* @param a: An integer
*/
public LinkedList<Integer> stack;
public LinkedList<Integer> mins;
public MinStack() {
stack = new LinkedList<Integer>();
mins = new LinkedList<Integer>();
// do intialization if necessary
}
/*
* @param number: An integer
* @return: nothing
*/
public void push(int number) {
// write your code here
stack.push(number);
if(mins.isEmpty()){
mins.push(number);
}
else if(number <mins.peek()){
mins.push(number);
}
else{
mins.push(mins.peek());
}
}
/*
* @param a: An integer
* @return: An integer
*/
public int pop() {
// write your code here
if(stack.isEmpty()){
return -1;
}
else{
mins.pop();
return stack.pop();
}
}
/*
* @param a: An integer
* @return: An integer
*/
public int min() {
// write your code here
if(stack.isEmpty()){
return -1;
}
else{
return mins.peek();
}
}
}