https://leetcode.com/problems/implement-queue-using-stacks/submissions/
class MyQueue {
stact<int> enqueStack;
stact<int> dequeStack;
public:
/** Initialize your data structure here. */
MyQueue() {
}
/** Push element x to the back of queue. */
void push(int x) {
enqueStack.push(x);
}
/** Removes the element from in front of queue and returns that element. */
int pop() {
if(dequeStack.empty() && enqueStack.empty()) return NULL;
if(dequeStack.empty()){
while(!enqueStack.empty())
{
dequeStack.push(enqueStack.top());
enqueStack.pop();
}
int top = dequeStack.top();
dequeStack.pop();
return top;
}
else {
int top = dequeStack.top();
dequeStack.pop();
return top;
}
}
/** Get the front element. */
int peek() {
if(dequeStack.empty() && enqueStack.empty()) return NULL;
if(!dequeStack.empty()){
return dequeStack.top();
} else{
while(!enqueStack.empty()){
dequeStack.push(enqueStack.top());
enqueStack.pop();
}
return dequeStack.top();
}
}
/** Returns whether the queue is empty. */
bool empty() {
if(dequeStack.empty() && enqueStack.empty()) return true;
return false;
}
};
/**
* 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();
Runtime: 0 ms, faster than 100.00% of C++ online submissions for Implement Queue using Stacks.
Memory Usage: 7.1 MB, less than 11.12% of C++ online submissions for Implement Queue using Stacks.