正如標題所述,你需要使用兩個棧來實現佇列的一些操作。
佇列應支援push(element),pop() 和 top(),其中pop是彈出佇列中的第乙個(最前面的)元素。
pop和top方法都應該返回第乙個元素的值。
樣例 比如push(1), pop(), push(2), push(3), top(), pop(),你應該返回1,2和2
挑戰 僅使用兩個棧來實現它,不使用任何其他資料結構,push,pop 和 top的複雜度都應該是均攤o(1)的
思路:
利用兩個棧來實現佇列,當push時,元素壓入stack1,當進行pop或top操作時,取stack2的棧頂或出棧,若此時stack2為空,將stack1的元素出棧並壓入stack2中(保證先進先出),直至stack1為空。
#ifndef c40_h
#define c40_h
#include
#include
using
namespace
std;
class myqueue
/** @param element: an integer
* @return: nothing
*/void push(int element)
/** @return: an integer
*/int pop()
}val = stack2.top();
stack2.pop();
return val;}/*
* @return: an integer
*/int top()
}return stack2.top();
}stack
stack1, stack2;
};#endif
Lintcode 用棧實現佇列
正如標題所述,你需要使用兩個棧來實現佇列的一些操作。佇列應支援push element pop 和 top 其中pop是彈出佇列中的第乙個 最前面的 元素。pop和top方法都應該返回第乙個元素的值。樣例 比如push 1 pop push 2 push 3 top pop 你應該返回1,2和2 挑...
lintcode 用棧實現佇列 40
正如標題所述,你需要使用兩個棧來實現佇列的一些操作。佇列應支援push element pop 和 top 其中pop是彈出佇列中的第乙個 最前面的 元素。pop和top方法都應該返回第乙個元素的值。樣例 比如push 1 pop push 2 push 3 top pop 你應該返回1,2和2 挑...
LintCode刷題 40 用棧實現佇列
正如標題所述,你需要使用兩個棧來實現佇列的一些操作。佇列應支援push element pop 和 top 其中pop是彈出佇列中的第乙個 最前面的 元素。pop和top方法都應該返回第乙個元素的值。樣例 比如push 1 pop push 2 push 3 top pop 你應該返回1,2和2 題...