剑指Offer:包含min函数的栈
2016-08-04 10:05
218 查看
包含min函数的栈
定义栈的数据结构,请在该类型中实现一个能够得到栈最小元素的min函数。好像在LeetCode上做过。总之,情况一定考虑完整。
class Solution { public: void push(int value) { st.push_back(value); } void pop() { if(!st.empty()){ int sz=st.size(); st.erase(st.begin()+sz-1,st.end()); } else{ cerr<<"no element"<<endl; } } int top() { if(!st.empty()){ return st.back(); } else{ cerr<<"no element"<<endl; return -1; } } int min() { if(!st.empty()){ return *(min_element(st.begin(),st.end())); } else{ cerr<<"no element"<<endl; return -1; } } private: vector<int> st; };
2016.9.8更新
参考了书中源码,用一个保存最小值的栈来时刻指示。每一个数据栈的值在最小栈中对应一个最小值。
class Solution { public: void push(int value) { mData.push(value); if(mMin.empty()||value<mMin.top()){ mMin.push(value); } else{ mMin.push(mMin.top()); } } void pop() { mData.pop(); mMin.pop(); } int top() { if(mData.empty()){ cerr<<"no element."<<endl; return -1; } return mData.top(); } int min() { if(mData.empty()){ cerr<<"no element."<<endl; return -1; } return mMin.top(); } private: stack<int> mData; stack<int> mMin; };
相关文章推荐
- 【剑指offer】之包含min函数的栈
- 剑指Offer-包含min函数的栈
- 剑指Offer:包含min函数的栈(JAVA)
- 剑指Offer(30)包含min函数的栈
- 【剑指offer】20包含min函数的栈
- 【剑指offer】包含min函数的栈
- 剑指offer——包含min函数的栈
- 剑指Offer_20_包含min函数的栈
- 剑指offer面试题21:包含min函数的栈
- 剑指offer:包含min函数的栈(java)
- 【剑指Offer面试编程题】题目1522:包含min函数的栈--九度OJ
- 剑指Offer之包含min函数的栈
- 剑指offer(十七)之包含min函数的栈
- 包含min函数的栈 (剑指Offer 第 19 题)
- 【剑指offer】4.3举例让抽象问题具体化——面试题21:包含min函数的栈
- 【剑指Offer面试编程题】题目1522:包含min函数的栈--九度OJ
- 【剑指offer】面试题30:包含min函数的栈
- 剑指offer-面试题21-包含min函数的栈
- 剑指offer题21 包含min函数的栈
- 剑指offer--包含min函数的栈