剑指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#