100169. Min Stack LCCI
2026/1/12小于 1 分钟约 195 字
100169. Min Stack LCCI
难度: Easy
题目描述
How would you design a stack which, in addition to push and pop, has a function min which returns the minimum element? Push, pop and min should all operate in 0(1) time.
Example:
MinStack minStack = new MinStack(); minStack.push(-2); minStack.push(0); minStack.push(-3); minStack.getMin(); --> return -3. minStack.pop(); minStack.top(); --> return 0. minStack.getMin(); --> return -2.
解题思路
代码实现
解决方案
java
class MinStack {
private Stack<Integer> mainStack; // 主栈,存储常规元素
private Stack<Integer> minStack; // 辅助栈,存储当前最小值
/** initialize your data structure here. */
public MinStack() {
mainStack = new Stack<>();
minStack = new Stack<>();
}
public void push(int x) {
mainStack.push(x);
if (minStack.isEmpty()) {
minStack.push(x);
return;
}
if (minStack.peek() <= x) {
minStack.push(minStack.peek());
}else{
minStack.push(x);
}
}
public void pop() {
mainStack.pop();
minStack.pop();
}
public int top() {
return mainStack.peek();
}
public int getMin() {
return minStack.peek();
}
}
/**
* Your MinStack object will be instantiated and called as such:
* MinStack obj = new MinStack();
* obj.push(x);
* obj.pop();
* int param_3 = obj.top();
* int param_4 = obj.getMin();
*/