题目:
思路:
可以说很简单了,参考一下225的题解,就能想到,使用一个中间栈.
让栈的存放顺序和队列一致,这样pop操作和front操作就不用进行修改,唯一需要改动的也只有push操作:
先将原栈的数据push到tem栈中,然后将新的元素push到tem中,最后将tem栈的数据push到原栈中,就完成了顺序的保持.
见图:
代码:
class MyQueue {
public:
/** Initialize your data structure here. */
MyQueue() {
}
/** Push element x to the back of queue. */
void push(int x) {
std::stack<int> tem;
while(!_data.empty()){
tem.push(_data.top());
_data.pop();
}
tem.push(x);
while(!tem.empty()){
_data.push(tem.top());
tem.pop();
}
}
/** Removes the element from in front of queue and returns that element. */
int pop() {
int x = _data.top();
_data.pop();
return x;
}
/** Get the front element. */
int peek() {
return _data.top();
}
/** Returns whether the queue is empty. */
bool empty() {
return _data.empty();
}
private:
std::stack<int> _data;
};
/**
* 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();
*/
总结:
终于自己想出一道题目了,还是很欣慰的,有效思考大于被动学习.
加油!