网站建设吉金手指专业12,企业邮箱下载,icp备案查询工信部,网站标签设置题目 设计一个支持 push #xff0c;pop #xff0c;top 操作#xff0c;并能在常数时间内检索到最小元素的栈。 push(x) —— 将元素 x 推入栈中。 pop() —— 删除栈顶的元素。 top() —— 获取栈顶元素。 getMin() —— 检索栈中的最小元素。 示例: 输入#xff1a; [pop top 操作并能在常数时间内检索到最小元素的栈。 push(x) —— 将元素 x 推入栈中。 pop() —— 删除栈顶的元素。 top() —— 获取栈顶元素。 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 LinkedListInteger stack new LinkedList();private LinkedListInteger minStack new LinkedList();/** initialize your data structure here. */public MinStack() {}public void push(int x) {if (stack.isEmpty()) {minStack.addFirst(x);}else {minStack.addFirst(Math.min(minStack.getFirst(), x));}stack.addFirst(x);}public void pop() {stack.removeFirst();minStack.removeFirst();}public int top() {return stack.getFirst();}public int getMin() {return minStack.getFirst();}
}要点
常数级操作意味着各个方法均不能对容器进行遍历唯一想到的好办法即是把最小值保存下来便于访问。