问题描述
实现O(1)获取最大最小值的栈
问题:定义栈的数据结构,请在该类型中实现一个能够得到栈的最小元素的getMin函数,getMax函数。在该栈中,调用getMin、getMax、push及pop的时间复杂度都是O(1).
思路
定义一个minStack辅助栈每次记住入栈stack的最小值,即:将数据分别入栈stack和minStack,当入栈minStack的时候,与栈顶元素比较大小,若小于栈顶元素,则入栈成为新的栈顶元素,若大于栈顶元素,则入栈原先的栈顶元素。
getMax的思路同上。
代码
import java.util.Stack;
/**
* 实现O(1)获取最大最小值的栈
*/
public class NewStack{
Stack<Integer> stack = new Stack<>();
Stack<Integer> maxStack = new Stack<>();
Stack<Integer> minStack = new

最低0.47元/天 解锁文章
168万+

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



