【左神算法】包含min函数的栈
程序员文章站
2024-03-15 22:39:00
...
min函数的栈
思路
思路 使用两个栈 一个栈存储数据 一个栈 存储最小值
push()->data栈直接添加 min去记录当前每次push之后的最小值,并将最小值直接添加到minStack栈中
pop()->dataStack和minStack直接pop 当minStack为null将Integer.MaxValue赋值给minValue
否则的话 将minStack当前栈顶的最小元素赋值给minValue
code
class MinStack{
/*
思路 使用两个栈 一个栈存储数据 一个栈 存储最小值
push()->data栈直接添加 min去记录当前每次push之后的最小值,并将最小值直接添加到minStack栈中
pop()->dataStack和minStack直接pop 当minStack为null将Integer.MaxValue赋值给minValue
否则的话 将minStack当前栈顶的最小元素赋值给minValue
*/
private Stack<Integer> dataStack ;//数据栈
private Stack<Integer> minStack ;//存储最小值栈
private Integer minValue;
public MinStack() {
dataStack = new Stack<>();
minStack = new Stack<>();
minValue = Integer.MAX_VALUE;
}
public void push(int x) {
dataStack.push(x);
minValue = Math.min(minValue,x);
minStack.push(minValue);//记录每一次的最小值
}
public void pop() {
dataStack.pop();
minStack.pop();
minValue = minStack.isEmpty() ? Integer.MAX_VALUE : minStack.peek();
}
public int top() {
return dataStack.peek();
}
public int getMin() {
return minValue;
}
}