赞
踩
去年10月份左右的时候,一位师兄曾说到他的一篇面试题,好像是实现一个队列,这个队列包含插入,弹出,找到最大值和最小值的操作。
对于实现一个栈,这个栈包含插入,弹出,找到最大值和最小值的操作,这个栈的实现相对于上面队列的实现更简单。
先说栈的实现:
使用三个栈来保存原栈,栈最大值和栈最小值。
- stack<int> st;
- stack<int> maxst;
- stack<int> minst;
-
- void push(int val)
- {
- st.push(val);
- // 计算栈底到栈顶的最大值
- if (maxst.empty() || maxst.top() <= val)
- maxst.push(val);
- //计算栈底到栈顶的最小值
- if (minst.empty() || min.stop() >= val)
- maxst.push(val);
- }
-
- void pop()
- {
- int value = st.top();
- st.pop();
- if (maxst.top() == value)
- maxst.pop();
- if (minst.top() == value)
- minst.pop();
- }
-
- int findmin()
- {
- return minst.top();
- }
-
- int findmax()
- {
- return maxst.top();
- }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。