017【入门】最小栈
155. 最小栈 - 力扣LeetCode设计一个支持pushpoptop操作并能在常数时间内检索到最小元素的栈。实现MinStack类:MinStack()初始化堆栈对象。void push(int value)将元素value推入堆栈。void pop()删除堆栈顶部的元素。int top()获取堆栈顶部的元素。int getMin()获取堆栈中的最小元素。示例 1:输入[MinStack,push,push,push,getMin,pop,top,getMin] [[],[-2],[0],[-3],[],[],[],[]]输出[null,null,null,null,-3,null,0,-2]解释MinStack minStack new MinStack(); minStack.push(-2); minStack.push(0); minStack.push(-3); minStack.getMin(); -- 返回 -3. minStack.pop(); minStack.top(); -- 返回 0. minStack.getMin(); -- 返回 -2.提示-231 val 231 - 1pop、top和getMin操作总是在非空栈上调用push,pop,top, andgetMin最多被调用3 * 104次思路辅助栈我们取当前辅助栈的栈顶存储的最小值与当前元素比较得出最小值将这个最小值插入辅助栈中。class MinStack { stackintst; stackintminn; public: MinStack() { int NINT_MAX; st.push(N); minn.push(N); } void push(int value) { st.push(value); if(st.empty()) { minn.push(value); } else { int tminn.top(); if(tvalue) minn.push(t); else minn.push(value); } } void pop() { if(!st.empty()) { st.pop(); minn.pop(); } } int top() { if(!st.empty()) return st.top(); return 0; } int getMin() { if(!minn.empty()) return minn.top(); return 0; } }; /** * Your MinStack object will be instantiated and called as such: * MinStack* obj new MinStack(); * obj-push(value); * obj-pop(); * int param_3 obj-top(); * int param_4 obj-getMin(); */