Design a stack that supports push, pop, top, and retrieving the minimum element in constant time.
Implement the MinStack class:
•
MinStack() initializes the stack object.
•
void push(int val) pushes the element val onto the stack.
•
void pop() removes the element on the top of the stack.
•
int top() gets the top element of the stack.
•
int getMin() retrieves 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
Plain Text
복사
Constraints:
•
231 <= val <= 231 - 1
•
Methods pop, top and getMin operations will always be called on non-empty stacks.
•
At most 3 * 104 calls will be made to push, pop, top, and getMin.
My solution
상수 시간에 최소 요소를 retrieving, push, pop, top을 지원하는 stack을 설계해라.
Implement the MinStack class:
•
MinStack() 는 stack object로 초기화한다.
•
void push(int val) 는 val 요소를 스택으로 push한다.
•
void pop() 는 스택의 top에 요소를 제거한다.
•
int top() 스택의 top 요소를 가져온다.
•
int getMin() 스택에서 최소 요소를 검색한다.