[LintCode]40.用栈实现队列
来源:互联网 发布:淘宝账号的心怎么涨 编辑:程序博客网 时间:2024/05/16 17:25
正如标题所述,你需要使用两个栈来实现队列的一些操作。
队列应支持push(element),pop() 和 top(),其中pop是弹出队列中的第一个(最前面的)元素。
pop和top方法都应该返回第一个元素的值。
样例
比如push(1), pop(), push(2), push(3), top(), pop(),你应该返回1,2和2
思路:实现上是一个栈作为压入栈,在压入数据时只往这个栈中压入,记为stack1;另一个栈作为弹出栈,在弹出数据时只从这个栈弹出,记为stack2。
需要注意两点:1.如果stack1要往stack2中压入数据,必须一次性把stack1中数据全部压入。
2.如果stack2不为空,stack1绝对不能向stack2中压入数据。
class MyQueue {public: stack<int> stack1; stack<int> stack2; MyQueue() { // do intialization if necessary如果需要做初始化 } void push(int element) { stack1.push(element); } int pop() { if(stack2.empty()) { while(!stack1.empty()){ stack2.push(stack1.top()); stack1.pop(); } } int a=stack2.top(); stack2.pop(); return a; } int top() { if(stack2.empty()) { while(!stack1.empty()){ stack2.push(stack1.top()); stack1.pop(); } } return stack2.top(); }};
编写一个类,只能用两个栈结构实现队列,支持队列的基本操作(push,pop)。
给定一个操作序列ope及它的长度n,其中元素为正数代表push操作,为0代表pop操作,保证操作序列合法且一定含pop操作,请返回pop的结果序列。
测试样例:
[1,2,3,0,4,0],6
返回:[1,2]
class TwoStack {public: vector<int> twoStack(vector<int> ope, int n) { stack<int> StackPush; //push数据 stack<int> StackPop; //pop数据 vector<int> temp; for(int i=0;i<n;i++){ if(ope[i]>0){ //元素为正数代表push操作 StackPush.push(ope[i]); }else{ if(StackPop.empty()) { while(!StackPush.empty()){ StackPop.push(StackPush.top()); StackPush.pop(); } } int a=StackPop.top(); temp.push_back(a); StackPop.pop(); } } return temp; }};
阅读全文
0 0
- [LintCode]40.用栈实现队列
- Lintcode 用栈实现队列
- LintCode:用栈实现队列
- 【LintCode】用栈实现队列
- LintCode : 用栈实现队列
- lintcode,用栈实现队列
- Lintcode 用栈实现队列
- Lintcode 用栈实现队列
- lintcode-用栈实现队列-40
- [Lintcode]用栈实现队列
- LintCode 40 用栈实现队列
- LintCode之40 用栈实现队列
- LintCode-剑指Offer-(40)用栈实现队列
- 用栈实现队列
- 用队列实现栈
- 用栈实现队列
- 用队列实现栈
- 用栈实现队列
- 图解HTTP
- jQuery form插件使用详解
- Archlinux安装xfce4桌面及美化流程
- IntentFilter
- java基础总结3
- [LintCode]40.用栈实现队列
- HDU 1878 欧拉回路(入门)
- WideCharToMultiByte 和 MultiByteToWideChar 之 codePage 参数(一)
- JavaScript HTML DOM – 改变 HTML
- Finder2.2.0
- js自学_day01_基础篇
- 初用WebService
- 编写方法,参数为a和n,求s=a+aa+aaa+aaaa+aa...a的值,其中a是一个数字,n表示一共几个数。例如2+22+222+2222+22222(此时a=2,n=5)。
- tensorflow rnn 最简单实现代码