济源专业网站建设(制作网站),网站生成静态页面工具,网站建设接外包流程,谷歌服务器题目
定义栈的数据结构#xff0c;请在该类型中实现一个能够得到栈的最小元素的 min 函数在该栈中#xff0c;调用 min、push 及 pop 的时间复杂度都是 O(1)。 MinStack minStack new MinStack(); minStack.push(-2); minStack.push(0); minStack.push(-3); minStack.min()…题目
定义栈的数据结构请在该类型中实现一个能够得到栈的最小元素的 min 函数在该栈中调用 min、push 及 pop 的时间复杂度都是 O(1)。 MinStack minStack new MinStack(); minStack.push(-2); minStack.push(0); minStack.push(-3); minStack.min(); -- 返回 -3. minStack.pop(); minStack.top(); -- 返回 0. minStack.min(); -- 返回 -2. 提示 各函数的调用总次数不超过 20000 次
实现
函数调用次数限制因此min不能直接遍历大小选择用两个栈栈B用于存储较小数严格降序排列。直到A空B才为空
class MinStack {StackInteger A, B;public MinStack() {A new Stack();#栈 B new Stack();}public void push(int x) {A.add(x);if(B.empty() || B.peek() x)B.add(x);}public void pop() {if(A.pop().equals(B.peek()))B.pop();}public int top() {return A.peek();}public int min() {return B.peek();}
}总结
Stackadd(x)peek()pop()empty()