題目
定義棧的資料結構,要求新增乙個min函式,能夠得到棧的最小元素。
要求函式min、push以及pop的時間複雜度都是o(1)。
解答
棧是lifo的資料結構,採用陣列作為儲存結構,要求幾個函式的時間複雜度都是o(1),則棧頂需要儲存當前的狀態,即當前的最小值。設計乙個結構作為棧中儲存的資料,結構中包含實際需要儲存的資料以及當前的最小值。
原始碼
#include#includeusing namespace std;
templateclass mstackelement
t data;
t minele;
};templateclass mstack
bool empty()
void spush(t newelement)
mstackelement*newtop = new mstackelement(newelement,minele);
elements.push_back(newtop);
}t spop()
};int main()
{ mstacks;
s.spush(10);
s.spush(3);
s.spush(5);
s.spush(-1);
int top = s.spop();
cout<
設計包含min函式的棧
本文 題目 定義棧的資料結構,要求新增乙個min函式,能夠得到棧的最小元素。要求函式min push以及pop的時間複雜度都是o 1 分析 這是去年google的一道面試題。我看到這道題目時,第一反應就是每次push乙個新元素時,將棧裡所有逆序元素排序。這樣棧頂元素將是最小元素。但由於不能保證最後p...
設計包含min函式的棧
定義棧的資料結構,要求新增乙個min函式,能夠得到棧的最小元素,要求函式min,push及pop的時間複雜度都是o 1 棧的資料結構包含兩個普通棧,乙個棧存資料,另乙個棧存最小值 或最小值的位置,如果用stl裡的棧,則不能存最小值的位置,因為stl裡的stack不支援下標索引訪問 cpp view ...
設計包含min函式的棧
題目 定義棧的資料結構,要求新增乙個min函式,能夠得到棧的最小元素。要求函式min push以及pop的時間複雜度都是o 1 注 這是06年一道google的面試題.先來說個常規解和他的乙個優化,常規解的時間複雜度符合要求,但需要線性的額外空間.常規解 參考 除了題目要求的棧之外新開乙個棧,用來記...