class MinStack { public: /** initialize your data structure here. */ MinStack() { } void push(int x) { myStack.push(x); update(x); } void pop() { if(myStack.top()==helpStack.top()) helpStack.pop(); myStack.pop(); } int top() { return myStack.top(); } int getMin() { return helpStack.top(); } void update(int x){ if(helpStack.empty()||x<=helpStack.top()) helpStack.push(x); } stack<int> myStack; stack<int> helpStack; }; /** * 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(); */