题目分析: [[EVD]] - 剑指 Offer 09. 用两个栈实现队列
https://leetcode-cn.com/problems/yong-liang-ge-zhan-shi-xian-dui-lie-lcof/
简单描述:
- 用两个栈实现一个队列,实现它的两个函数 appendTail 和 deleteHead(若队列中没有元素,deleteHead 操作返回 -1 )
限制🚫
- 1 <= values <= 10000
- 最多会对 appendTail、deleteHead 进行 10000 次调用
示例:
解题思路:
思路:
- #栈
用两个栈实现单队列,栈A负责保存appendTail()函数尾部插入数据,栈B负责将栈A数据正序化后删除来实现deleteHead()函数
效率:
- 空间复杂度
- appendTail() 时间复杂度

- deleteHead() 时间复杂度
代码:
#include <stack>
using namespace std;
class CQueue {
private:
stack<int> tail,head;
public:
/*双栈模拟队头和队尾*/
CQueue() {
}
void appendTail(int value) {
tail.push(value);
}
int deleteHead() {
if(head.empty()){
while(!tail.empty()){
head.push(tail.top());
tail.pop();
}
}
int res = -1;
if(!head.empty()){
res = head.top();
head.pop();
}
return res;
}
};