题目描述
Design a stack that supports push, pop, top, and retrieving the minimum element in constant time.
push(x) – Push element x onto stack.
pop() – Removes the element on top of the stack.
top() – Get the top element.
getMin() – Retrieve the minimum element in the stack.
Example:
1 2 3 4 5 6 7 8
Min Stack min Stack = new Min Stack(); min Stack.push(-2 );min Stack.push(0 );min Stack.push(-3 );min Stack.getMin (); --> Returns -3 .min Stack.pop();min Stack.top(); --> Returns 0 .min Stack.getMin (); --> Returns -2 .
代码如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44
public class MinStack { Stack<Integer> stack1; Stack<Integer> stack2; public MinStack() { stack1 = new Stack<>(); stack2 = new Stack<>(); } public void push (int x) { stack1.push (x); if (stack2.isEmpty() ){ stack2.push (x); }else { if (stack2.peek() >= x) stack2.push (x); } } public void pop () { if (stack2.peek().equals(stack1.peek())) stack2.pop (); stack1.pop (); } public int top() { return stack1.peek(); } public int getMin() { return stack2.peek(); } } * 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(); */
近期评论