class MyQueue {
public:
std::deque<int> input;
std::deque<int> output;
MyQueue() {}
void push(int x) {
input.push_back(x);
}
int pop() {
if (output.empty()) {
while (!input.empty()) {
output.push_back(input.front());
input.pop_front();
}
}
int remove = output.front();
output.pop_front();
return remove;
}
int peek() {
if (output.empty()) {
while (!input.empty()) {
output.push_back(input.front());
input.pop_front();
}
}
return output.front();
}
bool empty() {
return input.empty() && output.empty();
}
};
/**
* Your MyQueue object will be instantiated and called as such:
* MyQueue* obj = new MyQueue();
* obj->push(x);
* int param_2 = obj->pop();
* int param_3 = obj->peek();
* bool param_4 = obj->empty();
*/
思路:
栈是先进后出的。所以需要实现先进先出需要两个栈。这样就实现了先进的数据在第二个队列里面在头部。
知识点:
队列的一些基本使用方法。