两个栈实现队列
来源:互联网 发布:花生壳远程监控软件 编辑:程序博客网 时间:2024/06/05 23:43
first idea in my mind is
把第二个栈作为辅助栈,要用的时候家清空,第一个栈作为主要的元素存放点。
class Solution{public: void push(int node) { stack1.push(node); } int pop() { while(!stack2.empty())//清空辅助栈 { stack2.pop(); } while(!stack1.empty())//主栈倒进辅助栈里 { stack2.push(stack1.top()); stack1.pop(); } int res = 0; if(!stack2.empty())//获取出队元素 { res = stack2.top(); stack2.pop(); } while(!stack2.empty())//倒回去 { stack1.push(stack2.top()); stack2.pop(); } return res; }private: stack<int> stack1; stack<int> stack2;};
虽然简单容易理解,但是每次pop都要清空两次填充两次栈其实是多余的动作,消耗大把时间。
其实可以把stack2作为出队的容器,stack1作为入队的容器,两个栈共同保存队列。
int pop(){ if(!stack2.empty()) { while(!stack1.empty()) { stack2.push(stack1.top()); stack1.pop(); } } int res = stack2.top(); stack2.pop(); return res;}
阅读全文
0 0
- 两个栈实现队列
- 两个队列实现栈
- 两个栈实现队列
- 两个栈实现队列
- 两个栈实现队列
- 两个队列实现栈
- 两个栈实现队列
- 两个 栈 实现队列
- 两个栈实现队列
- 两个队列实现栈
- 两个栈实现队列
- 两个栈实现队列
- 两个队列实现栈
- 两个栈实现队列
- 两个栈实现队列
- 两个栈实现队列
- 队列--两个栈实现
- 两个队列实现栈
- koa之处理器模块化
- gif图像分解、gif图像制作
- MVP 模式简单易懂的介绍方式
- 直接选择排序
- fastdfs分布式文件系统之JAVA client工具类封装
- 两个栈实现队列
- Atitit 人工智能目前的进展与未来 包含的技术 v2 r99.docx
- Weex的环境搭建及集成到Android Studio和趟过的坑
- Atitit 常用数据校验规则
- Android 启动活动的最佳写法
- Atitit 签名规范 attilax总结 安全签名规范 v2 r99.docx
- PTA 计算高考状元
- ConvenientBanner使用
- 【JS】简述seacrch、match、exec、test