劍指Offer之 包含min函式的棧

2021-07-02 06:55:58 字數 600 閱讀 5502

定義棧的資料結構,請在該型別中實現乙個能夠得到棧的最小元素的min函式。

在該棧中,呼叫min,push,pop函式的世界複雜度都是o(1)。

維護乙個輔助棧s2,用來儲存當前棧中的最小元素

比如棧s1 :<2,4,3,1,5> ,輔助棧s2就是: <2,2,2,1,1>

#include#include using namespace std;

//功能:定義棧的資料結構,請在該型別中實現乙個能夠得到棧的最小元素的min函式。

//在該棧中,呼叫min,push,pop函式的世界複雜度都是o(1)。

//思路:維護乙個輔助棧s2,用來儲存當前棧中的最小元素

//比如棧s1 :<2,4,3,1,5> ,輔助棧s2就是: <2,2,2,1,1>

struct stackwithmin

} int min()

void pop1() }

};int main()

{ stackwithmin obj;

obj.push1(4);

obj.push1(2);

obj.push1(3);

obj.push1(1);

cout<

劍指offer之 包含min函式的棧

題目描述 定義棧的資料結構,請在該型別中實現乙個能夠得到棧中所含最小元素的min函式 時間複雜度應為o 1 做法這道題有點像單調佇列 單調棧 維護兩個棧s1 s2,第乙個棧用於淳樸的壓棧出棧,目的是儲存輸入的資料。第二個棧用於儲存棧中的最小值,也就是說第二個棧的棧頂永遠是最小值。壓棧時 s1壓棧,如...

劍指offer之包含min函式的棧

用兩個棧,stack用來存所有的元素,getmin用來存加入新的元素後當前棧中對應的最小值。兩個棧中的元素數量始終保持一致,當新的元素小於棧頂元素時,向getmin棧頂push新來的元素,否則,向getmin棧頂加入原棧頂元素。執行 pop 方法時,兩個棧同時彈出各自的棧頂元素。public sta...

劍指offer 包含min函式的棧

一 問題描述 二 思路 兩個棧,乙個當前棧data,乙個輔助棧m min,輔助棧用來儲存當前的最小值,如果出棧,輔助棧也出棧,棧頂元素始終是當前的最小值。在入棧時,如果輔助棧為空或者當前值小於輔助棧棧頂元素,則將當前值加入輔助棧 否則將輔助棧的棧頂元素加入輔助棧,表明此次有大於min棧頂數字入棧。以...