55 lines
1.6 KiB
Markdown
55 lines
1.6 KiB
Markdown
## 题目地址
|
||
https://leetcode-cn.com/problems/implement-queue-using-stacks/
|
||
|
||
## 思路
|
||
|
||
使用两个栈 一个输入栈,一个输出栈, 这里要注意输入栈和输出栈的关系,每当pop的时候且输出栈为空,就应该把输入站全部导入输出栈中
|
||
|
||
## C++代码
|
||
|
||
```
|
||
class MyQueue {
|
||
public:
|
||
stack<int> stIn;
|
||
stack<int> stOut;
|
||
/** Initialize your data structure here. */
|
||
MyQueue() {
|
||
|
||
}
|
||
/** Push element x to the back of queue. */
|
||
void push(int x) {
|
||
stIn.push(x);
|
||
}
|
||
|
||
/** Removes the element from in front of queue and returns that element. */
|
||
int pop() {
|
||
//只有当stOut为空的时候,再从stIn里导入数据(导入stIn全部数据)
|
||
if (stOut.empty()) {
|
||
// 从stIn导入数据直到stIn为空
|
||
while(!stIn.empty()) {
|
||
stOut.push(stIn.top());
|
||
stIn.pop();
|
||
}
|
||
}
|
||
int result = stOut.top();
|
||
stOut.pop();
|
||
return result;
|
||
}
|
||
|
||
/** Get the front element. */
|
||
int peek() {
|
||
int res = this->pop(); // 直接使用已有的pop函数
|
||
stOut.push(res); // 因为pop函数弹出了元素res,所以再添加回去
|
||
return res;
|
||
}
|
||
|
||
/** Returns whether the queue is empty. */
|
||
bool empty() {
|
||
return stIn.empty() && stOut.empty();
|
||
}
|
||
};
|
||
|
||
```
|
||
> 更过算法干货文章持续更新,可以微信搜索「代码随想录」第一时间围观,关注后,回复「Java」「C++」 「python」「简历模板」「数据结构与算法」等等,就可以获得我多年整理的学习资料。
|
||
|