題目:
思路:
可以說很簡單了,參考一下225的題解,就能想到,使用一個中間棧.
讓棧的存放順序和隊列一致,這樣pop操作和front操作就不用進行修改,唯一需要改動的也只有push操作:
先將原棧的數(shù)據(jù)push到tem棧中,然后將新的元素push到tem中,最后將tem棧的數(shù)據(jù)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();
*/
總結(jié):
終于自己想出一道題目了,還是很欣慰的,有效思考大于被動學(xué)習(xí).
加油!