- 题目
- 思路
题目链接:155. 最小栈
思路
设计两个栈,一个st,一个minSt;
入栈:st用来正常入栈,同时给minSt入栈,minSt入st.top 和 minSt.top元素的最最小值;
出栈:st出栈,minSt也出栈;因为它们是一一对应的;
class MinStack { public: MinStack() { } stackst; //存放正常放入的栈 stack minSt; //存放最小数据的栈 //相当于给正常的栈入栈 //同时给存放最小的值的栈入在正常栈中最小的值 void push(int val) { st.push(val); //给最小栈入栈,要用正常栈的栈顶和最小栈顶判断,把更加小的入最小栈 if(minSt.empty()) //第一次时候,最小栈为空,直接入正常栈的栈顶元素 { minSt.push(val); } else //要用正常栈的栈顶和最小栈顶判断,把更加小的入最小栈 { minSt.push(min(val,minSt.top())); } } void pop() { st.pop(); //正常的栈出栈,最小栈也要出,因为它们是一一对应的 minSt.pop(); } int top() { return st.top(); } int getMin() { return minSt.top(); } };
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)