12. Min Stack
Description
Implement a stack with min() function, which will return the smallest number in the stack.
It should support push, pop and min operation all in O(1) cost.
Example
push(1)
pop()
push(2)
push(3)
min()
push(1)
min()
Solution
import java.util.*;
public class MinStack {
Stack<Integer> stack1 = new Stack<>();
Stack<Integer> stack2 = new Stack<>();
public MinStack() {
}
public void push(int number) {
stack1.push(number);
if(stack2.isEmpty()||stack2.peek()>=number) stack2.push(number);
}
public int pop() {
int a = stack1.pop();
if(stack2.peek()==a) stack2.pop();
return a;
}
public int min() {
return stack2.peek();
}
}