40. 用棧實(shí)現(xiàn)隊(duì)列
正如標(biāo)題所述,你需要使用兩個(gè)棧來(lái)實(shí)現(xiàn)隊(duì)列的一些操作。
隊(duì)列應(yīng)支持push(element)蒸痹,pop() 和 top()岩齿,其中pop是彈出隊(duì)列中的第一個(gè)(最前面的)元素。
pop和top方法都應(yīng)該返回第一個(gè)元素的值寓免。
您在真實(shí)的面試中是否遇到過(guò)這個(gè)題癣诱?
Yes
樣例
比如push(1), pop(), push(2), push(3), top(), pop(),你應(yīng)該返回1袜香,2和2
相關(guān)題目
思路:算法實(shí)現(xiàn)很簡(jiǎn)單撕予,但此處需注意的是stack.pop()并不會(huì)直接返回一個(gè)特定的值而是直接刪除出去
class MyQueue {
public:
stack<int> s1;
stack<int> s2;
MyQueue() {
// do intialization if necessary
}
/*
* @param element: An integer
* @return: nothing
*/
void push(int e) {
// write your code here
s1.push(e);
}
/*
* @return: An integer
*/
int pop() {
// write your code here
int data;
if(s2.empty()){
while(!s1.empty()){
data=s1.top();
s2.push(data);
s1.pop();
}
}
data=s2.top();
s2.pop();
return data;
}
/*
* @return: An integer
*/
int top() {
int data;
if(s2.empty()){
while(!s1.empty()){
data=s1.top();
s2.push(data);
s1.pop();
}
}
return s2.top();
}
};