題目:
定義棧的資料結構,請在該型別中實現乙個能夠得到棧的最小元素的min函式,在該棧中,呼叫min,push,pop的時間複雜度都為o(1)。
思路:
模擬棧push,pop過程
#include
#include
using
namespace
std;
template
class minstack
virtual ~minstack(void) {}
void push(t value);
void pop(void);
t& min(void);
private:
std::stack
m_data; // 資料棧,存放棧的所有元素
std::stack
m_min; // 輔助棧,存放棧的最小元素
};template
void minstack::push(t value)
template
void minstack::pop()
template
t& minstack::min()
int main()
劍指Offer學習 面試題30 包含min函式的棧
包含min函式的棧 class minstack 新增乙個元素 min棧永遠儲存最小的元素,當新增的元素比min棧棧頂的元素小時,則入棧,否則在新增一次min棧中棧頂的值 param val public void push int val data stack.push val min stack...
劍指offer 面試題21 包含min函式的棧
題目 定義棧的資料結構,請在該型別中實現乙個能夠得到棧的最小最小元素的min函式。在該棧中,呼叫min push 及 pop的時間複雜度都是o 1 本題關鍵問題在於 o 1 時間複雜度的 min 函式。即無論佔中元素如何變化。都要在 o 1 內知道最小值。因此,需要設定兩個棧 1 資料棧,用於資料的...
劍指offer 面試題21 包含min函式的棧
題目描述 定義棧的資料結構,請在該型別中實現乙個能夠得到棧的最小素的min 函式。在該棧中,呼叫min push 及pop的時間複雜度都是0 1 題目分析 借助乙個輔助棧,當向棧中壓入元素時,跟輔助棧頂元素作比較,把最小的放到輔助棧中。每次都把最小元素放入輔助棧,這樣在彈出最小元素後,剩下的棧中棧頂...