LeetCode/232. Implement Queue using Stacks.md
2018-10-16 23:12:25 +08:00

63 lines
1.8 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# [232. Implement Queue using Stacks](https://leetcode.com/problems/implement-queue-using-stacks/description/)
# 思路
用栈实现队列。
设置两个栈stk1和stk2stk1中的元素是按照正常入栈顺序排的stk2则是逆序且同一时刻stk1和stk2至少一个为空。
若stk1不空对队列入队的话直接对stk1入栈即可否则要将stk2中所有元素pop到stk1中后再对stk1入栈。
若stk2不空对队列出队的话直接对stk2出栈即可否则要将stk1中所有元素pop到stk2中后再对stk2出栈。
# C++
```
class MyQueue {
private:
stack<int>stk1;
stack<int>stk2;
public:
/** Initialize your data structure here. */
MyQueue() {
}
/** Push element x to the back of queue. */
void push(int x) {
if(stk1.empty()){
int tmp;
while(!stk2.empty()){
tmp = stk2.top();
stk2.pop();
stk1.push(tmp);
}
}
stk1.push(x);
}
/** Removes the element from in front of queue and returns that element. */
int pop() {
int tmp;
if(stk2.empty()){
while(!stk1.empty()){
tmp = stk1.top();
stk1.pop();
stk2.push(tmp);
}
}
tmp = stk2.top();
stk2.pop();
return tmp;
}
/** Get the front element. */
int peek() {
if(stk2.empty()){
int tmp;
while(!stk1.empty()){
tmp = stk1.top();
stk1.pop();
stk2.push(tmp);
}
}
return stk2.top();
}
/** Returns whether the queue is empty. */
bool empty() {
return stk1.empty() && stk2.empty();
}
};
```