Easy
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:
MinStack minStack = new MinStack();
minStack.push(-2);
minStack.push(0);
minStack.push(-3);
minStack.getMin(); –> Returns -3.
minStack.pop();
minStack.top(); –> Returns 0.
minStack.getMin(); –> Returns -2.
113ms:
public class MinStack {
/** initialize your data structure here. */
int[] ca = new int[24];
int p = 0;
int min;
public MinStack() {
}
public void push(int x) {
if(p==0)
min = x;
else
min = Math.min(min, x);
if(p==ca.length-1){
int[] neca = new int[ca.length*2];
for(int i=0;i<ca.length;i++)
neca[i] = ca[i];
ca = neca;
}
ca[p++] = x;
}
public void pop() {
p--;
int v = ca[p];
if(v==min&&p>0){
min = ca[p-1];
for(int i=p-2;i>=0;i--){
min = Math.min(min, ca[i]);
}
}
}
public int top() {
return ca[p-1];
}
public int getMin() {
return min;
}
}
/**
* 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();
*/