155. Min Stack
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 1:
Input ["MinStack","push","push","push","getMin","pop","top","getMin"] [[],[-2],[0],[-3],[],[],[],[]] Output [null,null,null,null,-3,null,0,-2] Explanation MinStack minStack = new MinStack(); minStack.push(-2); minStack.push(0); minStack.push(-3); minStack.getMin(); // return -3 minStack.pop(); minStack.top(); // return 0 minStack.getMin(); // return -2
Constraints:
- Methods
pop
,top
andgetMin
operations will always be called on non-empty stacks.
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 | class MinStack { stack<int> stk, stkm; public: /** initialize your data structure here. */ MinStack() { } void push(int x) { stk.push(x); if(stkm.empty()) stkm.push(x); else{ if(stkm.top()>=x) stkm.push(x); } } void pop() { int x = stk.top(); stk.pop(); if(x==stkm.top()) stkm.pop(); } int top() { return stk.top(); } int getMin() { return stkm.top(); } }; /** * 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(); */ |
No comments:
Post a Comment