做leetcode记录
题目链接:leetcode 225. 用队列实现栈
一、思路
- 题目说使用两个队列来实现栈的功能,但是写代码的时候发现可以只使用一个栈。
- 对于push(int x)的入栈操作,先将要入栈的元素插入队列的尾部,然后依次重复将队列的头部转入尾部,直到入栈的元素成为队列的头部,这样队列中元素的顺序就和栈中元素的顺序相同了;
- 对于pop()操作,需要移除并返回栈顶元素。首先获取队列的头部并存入temp中,然后移除队头元素,然后返回temp;
二、视频
三、代码
class MyStack {
public:
queue<int> qu; //定义一个队列
MyStack() {
}
void push(int x) { //将元素 x 压入栈顶。
int size = qu.size();
qu.push(x); //将元素 x 添加到队尾
for(int i = 0; i < size; i++) //将元素x前的所有元素放到x后
{
int temp = qu.front();
qu.pop();
qu.push(temp);
}
}
int pop() { //将队头的元素赋值给temp,然后移除队头,返回temp
int temp = qu.front();
qu.pop();
return temp;
}
int top() {
return qu.front();
}
bool empty() { //判断队列是否为空
return qu.empty();
}
};