https://leetcode.cn/problems/min-stack/
设计一个支持 push ,pop ,top 操作,并能在常数时间内检索到最小元素的栈。
实现 MinStack 类:
MinStack()初始化堆栈对象。void push(int val)将元素val推入堆栈。void pop()删除堆栈顶部的元素。int top()获取堆栈顶部的元素。int getMin()获取堆栈中的最小元素。
示例 :
输入: ["MinStack","push","push","push","getMin","pop","top","getMin"] [[],[-2],[0],[-3],[],[],[],[]] 输出: [null,null,null,null,-3,null,0,-2] 解释: MinStack minStack = new MinStack(); minStack.push(-2); minStack.push(0); minStack.push(-3); minStack.getMin(); --> 返回 -3. minStack.pop(); minStack.top(); --> 返回 0. minStack.getMin(); --> 返回 -2.
class MinStack {
private Stack<Integer> dataStack; // 存储实际数据
private Stack<Integer> minStack; // 存储对应的最小值
public MinStack() {
dataStack = new Stack<>();
minStack = new Stack<>();
}
/**
* 将元素推入栈
*/
public void push(int val) {
dataStack.push(val);
// 将当前最小值推入minStack
if (minStack.isEmpty()) {
minStack.push(val);
} else {
//保证 minStack 的每个位置都对应着 dataStack 相同位置时的最小值
minStack.push(Math.min(val, minStack.peek()));
}
}
/**
* 删除栈顶元素
*/
public void pop() {
if (!dataStack.isEmpty()) {
dataStack.pop();
minStack.pop();
}
}
/**
* 获取栈顶元素
*/
public int top() {
return dataStack.peek();
}
/**
* 获取栈中的最小元素
*/
public int getMin() {
return minStack.peek();
}
}
896

被折叠的 条评论
为什么被折叠?



