設計包含min函式的棧

2021-07-22 01:47:36 字數 740 閱讀 1752

題目

定義棧的資料結構,要求新增乙個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的面試題.先來說個常規解和他的乙個優化,常規解的時間複雜度符合要求,但需要線性的額外空間.常規解 參考 除了題目要求的棧之外新開乙個棧,用來記...