题解 | #包含min函数的栈#
包含min函数的栈
https://www.nowcoder.com/practice/4c776177d2c04c2494f2555c9fcc1e49
import java.util.*;
import java.util.Stack;
public class Solution {
// 用于存储内容的栈
Stack<Integer> nodeStack = new Stack<>();
// 用于【同步】存储当前栈中最小值的栈
Stack<Integer> minStack = new Stack<>();
// 入栈
public void push(int node) {
// 两个栈要同步
// 入nodeStack
nodeStack.push(node);
// 入minStack
if (minStack.isEmpty()) {
// 如果minStack空,则无需比较
minStack.push(node);
}
// 如果minStack非空,则需要比较,将较小的压入minStack
int min = Math.min(node, minStack.peek());
minStack.push(min);
}
// 出栈(只弹出不返回)
public void pop() {
// 两个栈要同步
nodeStack.pop();
minStack.pop();
}
// 获得栈顶元素(只返回不弹出)
public int top() {
return nodeStack.peek();
}
// 获得栈中最小元素(只返回不弹出)
public int min() {
return minStack.peek();
}
}
查看10道真题和解析