[LeetCode]155. Min Stack

来源:互联网 发布:水晶机巧矩阵黄晶 编辑:程序博客网 时间:2024/06/11 01:41

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(); */
0 0