主页有其他数据结构内容(持续更新中)
难度:Easy
代码:
Solution1:两个栈
class MyStack {
public:
queue<int> q1;
queue<int> q2;
MyStack() {
}
void push(int x) {
// 把q2当成辅助队列,q1当成目标栈
q2.push(x);
// 每插入一次元素,都要做一次变换
while(!q1.empty()){
// 把q1中的所有元素(已是逆序)插入q2中,跟在当前插入元素的后面,从而实现逆序
q2.push(q1.front());
q1.pop();
}
swap(q1, q2);
}
int pop() {
int target = q1.front();
q1.pop();
return target;
}
int top() {
return q1.front();
}
bool empty() {
return q1.empty();
}
};
/**
* Your MyStack object will be instantiated and called as such:
* MyStack* obj = new MyStack();
* obj->push(x);
* int param_2 = obj->pop();
* int param_3 = obj->top();
* bool param_4 = obj->empty();
*/
Solution2:一个栈
class MyStack {
public:
queue<int> q1;
MyStack() {
}
void push(int x) {
int length = q1.size();
q1.push(x);
for(int i = 0; i < length; i++){
q1.push(q1.front());
q1.pop();
}
}
int pop() {
int target = q1.front();
q1.pop();
return target;
}
int top() {
return q1.front();
}
bool empty() {
return q1.empty();
}
};
/**
* Your MyStack object will be instantiated and called as such:
* MyStack* obj = new MyStack();
* obj->push(x);
* int param_2 = obj->pop();
* int param_3 = obj->top();
* bool param_4 = obj->empty();
*/