2 設計包含min 函式的棧

2021-05-26 19:13:08 字數 1337 閱讀 9914

2.設計包含min 函式的棧。

定義棧的資料結構,要求新增乙個min 函式,能夠得到棧的最小元素。

要求函式min、push 以及pop 的時間複雜度都是o(1)。

思路:1、min,push,pop都需要時間複雜度為o(1), 所以樹,堆等資料結構都不能用

2、棧只有通過push來新增元素,pop來刪除元素,min操作只是獲取元素資料,並不進行刪除操作

3、min最小元素也具有棧的特性,

如果push的元素小於min,則min等於新加入的元素,

如果pop的元素等於最小元素,則min為上乙個最小元素(並不是兩個最小元素之間的值)

/*

2.設計包含min 函式的棧。

定義棧的資料結構,要求新增乙個min 函式,能夠得到棧的最小元素。

要求函式min、push 以及pop 的時間複雜度都是o(1)。

*//*

思路:1、min,push,pop都需要時間複雜度為o(1), 所以樹,堆等資料結構都不能用

2、棧只有通過push來新增元素,pop來刪除元素,min操作只是獲取元素資料,並不進行刪除操作

3、min最小元素也具有棧的特性,

如果push的元素小於min,則min等於新加入的元素,

如果pop的元素等於最小元素,則min為上乙個最小元素(並不是兩個最小元素之間的值)

*/#ifndef interview_1_h

#define interview_1_h

#include #include template class stackwithmin

else if (minstack[minstack.size() - 1] > data)

}void pop()

datastack.pop_back();

} }t& min()

t& top()

bool empty()

return false;

}private:

std::vectordatastack;

std::vectorminstack;

};#endif

#include "interview_2.h"

#include using namespace std;

int main(void)

; for (int index = 0; index < 5; index++)

for (int index = 0; index < 5; index++)

system("pause");

return 0;

}

2 設計包含min 函式的棧。

題目描述 定義棧的資料結構,要求新增乙個min 函式,能夠得到棧的最小元素。要求函式min push 以及pop 的時間複雜度都是o 1 分析 這種題其實是相當的簡單,只需要多開乙個棧,用來儲存最小的元素,然後就能做到時間複雜度都是o 1 實現 include include includeusin...

設計包含min函式的棧

本文 題目 定義棧的資料結構,要求新增乙個min函式,能夠得到棧的最小元素。要求函式min push以及pop的時間複雜度都是o 1 分析 這是去年google的一道面試題。我看到這道題目時,第一反應就是每次push乙個新元素時,將棧裡所有逆序元素排序。這樣棧頂元素將是最小元素。但由於不能保證最後p...

設計包含min函式的棧

定義棧的資料結構,要求新增乙個min函式,能夠得到棧的最小元素,要求函式min,push及pop的時間複雜度都是o 1 棧的資料結構包含兩個普通棧,乙個棧存資料,另乙個棧存最小值 或最小值的位置,如果用stl裡的棧,則不能存最小值的位置,因為stl裡的stack不支援下標索引訪問 cpp view ...