劍指Offer 21 包含min函式的棧

2021-07-07 05:23:20 字數 662 閱讀 5731

題目:

定義棧的資料結構,請在該型別中實現乙個能夠得到棧的最小元素的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 題目分析 借助乙個輔助棧,當向棧中壓入元素時,跟輔助棧頂元素作比較,把最小的放到輔助棧中。每次都把最小元素放入輔助棧,這樣在彈出最小元素後,剩下的棧中棧頂...