import java.util.Stack;
import java.util.Arrays;
public class Solution {
private int size = 0;
private int[] elements = new int[10];
//辅助栈存最小值
private Stack<Integer> stack = new Stack<>();
private int min = Integer.MAX_VALUE;
public void push(int node) {
ensureCapacity(size + 1);
elements[size++] = node;
//处理最小值逻辑
if (node < min) {
min = node;
}
stack.push(min);
}
public void pop() {
if (size > 0) {
size--;
//处理最小值逻辑
Integer pop = stack.pop();
if (!stack.isEmpty()) {
min = stack.peek();
}
}
}
public int top() {
if (!isEmpty()) {
return elements[size - 1];
}
return 0;
}
public int min() {
return min;
}
public boolean isEmpty() {
return size == 0;
}
private void ensureCapacity(int newSize) {
if (newSize > elements.length) {
//要扩容
elements = Arrays.copyOf(elements, (3 * elements.length) / 2 + 1);
}
}
}