代码随想录算法训练营第十天
一、232.用栈实现队列
考察栈和队列的基本概念,题目比较简单。
class MyQueue {
public:
stack<int> StIn;
stack<int> StOut;
MyQueue() {
}
void push(int x) {
StIn.push(x);
}
int pop() {
if(StOut.empty()){
while(!StIn.empty()){
StOut.push(StIn.top());
StIn.pop();
}
}
int result = StOut.top();
StOut.pop();
return result;
}
int peek() {
int result = this->pop();
StOut.push(result);
return result;
}
bool empty() {
return StIn.empty() && StOut.empty();
}
};
二、225.用队列实现栈
跟上一题类似的思路,要掌握栈和队列的基本概念。
class MyStack {
public:
queue<int> que1;
queue<int> que2;
MyStack() {
}
void push(int x) {
que1.push(x);
}
int pop() {
int n = que1.size();
for(int i = 0; i < n-1; i++){
que2.push(que1.front());
que1.pop();
}
int result = que1.front();
que1.pop();
que1 = que2;
while(!que2.empty()){
que2.pop();
}
return result;
}
int top() {
int result = this->pop();
que1.push(result);
return result;
}
bool empty() {
return que1.empty();
}
};