155. 最小栈
设计一个支持 push ,pop ,top 操作,并能在常数时间内检索到最小元素的栈。
实现 MinStack 类:
MinStack() 初始化堆栈对象。
void push(int val) 将元素val推入堆栈。
void pop() 删除堆栈顶部的元素。
int top() 获取堆栈顶部的元素。
int getMin() 获取堆栈中的最小元素。
solution :
用一个辅助栈,存储当前最小值为栈顶,添加一个元素,如果小于栈顶,进栈,否则不管,删除一个元素如果等于栈顶,则出栈
class MinStack { stack<int> minSt; stack<int> st; public: MinStack() { minSt.push(INT_MAX); } void push(int val) { st.push(val); if (val <= minSt.top()) minSt.push(val); } void pop() { int tmp = st.top(); st.pop(); if (minSt.top() == tmp) minSt.pop(); } int top() { return st.top(); } int getMin() { return minSt.top(); } };
浙公网安备 33010602011771号