
此题用一个辅助栈就可以实现了
在往栈中压入数据时,data栈正常添加,min栈,若新数据小于当前栈顶元素,则压入新数据;若新数据小于当前栈顶元素,则再压入一个当前栈顶元素。
import java.util.Stack;
public class Solution {
private Stack<Integer> stack = new Stack<>();
private Stack<Integer> minstack = new Stack<>();
public void push(int node) {
if(stack.isEmpty()){
stack.push(node);
minstack.push(node);
return;
}
int top = minstack.peek();
if(node>top){
stack.push(node);
minstack.push(top);
}else{
stack.push(node);
minstack.push(node);
}
}
public void pop() {
stack.pop();
minstack.pop();
}
public int top() {
return stack.peek();
}
public int min() {
return minstack.peek();
}
}
本文介绍了一种使用两个栈实现带有获取最小值功能的数据结构的方法。通过一个数据栈和一个辅助栈,能够在O(1)时间内获取到当前栈中的最小值,同时保持入栈和出栈操作的效率。
308

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



