剑指offer:包含min函数的栈
class Solution{
public:
stack<int> st;
stack<int> minSt;
void push( int value){
if(st.size()==0 && minSt.size()==0) {
st.push(value);
minSt.push(value);}
else{
st.push(value);
if(value<=minSt.top()){
minSt.push(value);
}
else {
minSt.push(minSt.top());
}
}
}
void pop(){
st.pop();
minSt.pop();
}
int top(){
return st.top();
}
int min(){
return minSt.top();
}
};
首先定义两个栈,一个st正常进栈出栈的;另一个minSt只有当值比它原来值小的时候才进栈;在进栈函数ing,如果两个栈都为空,那么就值正常进栈,如果不为空,st正常进栈,而minSt需要判断大小,小的进栈,大于的不进栈,保持原来的那个栈中元素;出栈函数就是两个栈都出栈,栈顶元素就st栈出;min函数就是minSt函数的top栈顶元素出栈!!!
#剑指offer#
京东工作强度 418人发布