155. 最小栈
设计一个支持 push ,pop ,top 操作,并能在常数时间内检索到最小元素的栈。
push(x) —— 将元素 x 推入栈中。
pop() —— 删除栈顶的元素。
top() —— 获取栈顶元素。
getMin() —— 检索栈中的最小元素。
解析
用两个栈就好了
class MinStack {
Stack<Integer> stacka = new Stack<>();
Stack<Integer> stackb = new Stack<>();
/** initialize your data structure here. */
public MinStack() {
}
public void push(int x) {
stacka.push(x);
if(stackb.isEmpty() || stackb.peek()>=x){
stackb.push(x);
}
}
public void pop() {
if(!stacka.isEmpty()){
int val = stacka.pop();
if(stackb.peek()==val){
stackb.pop();
}
}
}
public int top() {
return stacka.isEmpty()?-1:stacka.peek();
}
public int getMin() {
if(!stackb.isEmpty()) return stackb.peek();
return -1;
}
}
/**
* Your MinStack object will be instantiated and called as such:
* MinStack obj = new MinStack();
* obj.push(x);
* obj.pop();
* int param_3 = obj.top();
* int param_4 = obj.getMin();
*/
注意:本文归作者所有,未经作者允许,不得转载