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 ...