劍指offer 包含min函式的棧,C 實現

2022-09-17 10:51:10 字數 884 閱讀 8610

部落格文章索引位址

部落格文章中**的github位址

1.題目

定義棧的資料結構,請在該型別中實現乙個能夠得到棧最小元素的min函式。在該棧中呼叫push、pop、top、min的時間複雜度都是o(1)。

2.思路

定義乙個輔助棧,用於存放資料棧每次入棧時的最小元素,輔助棧的棧頂元素是資料棧內最小值。

舉例:建立乙個空資料棧和空輔助棧。

1.資料棧中壓入3,輔助棧為空棧,最小值為3,輔助棧壓入3

2.資料棧中壓入4,4大於輔助棧的棧頂元素3,最小值為3,輔助棧壓入3

3.資料棧中壓入2,2小於輔助棧的棧頂元素3,最小值為2,輔助棧壓入2

4.資料棧中壓入1,1小於輔助棧的棧頂元素2,最小值為1,輔助棧壓入1

5.資料棧彈出棧頂元素,輔助棧彈出棧頂元素,輔助棧彈出棧頂元素後的棧頂元素是當前資料棧的最小值

6.資料棧彈出棧頂元素,輔助棧彈出棧頂元素,輔助棧彈出棧頂元素後的棧頂元素是當前資料棧的最小值

注意:資料棧和輔助棧操作同步,即對資料棧插入時,同時輔助棧也插入;彈出資料棧棧頂元素時,同時彈出輔助棧棧頂元素。

牛客網

class solution ;
4.測試用例

劍指offer 包含min函式的棧

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

劍指offer 包含min函式的棧

題目描述 定義棧的資料結構,請在該型別中實現乙個能夠得到棧最小元素的min函式。這個題要求時間複雜度是o 1 竟然想了好久沒想出來,原來思維定式了,一直在想既然要從小到大排序怎麼可能實現o 1 呢 其實由於出棧入棧是由順序的,用來記錄最小值的棧也不用完整記錄所有元素的順序,只要根據入棧的順序來就行 ...

劍指offer 包含min函式的棧

定義棧的資料結構,請在該型別中實現乙個能夠得到棧最小元素的min函式。思路 這裡,定義兩個棧,stack和min stack,其中,min stack的最後乙個數永遠保持是stack中最小的乙個數。具體的,在puch時,只儲存比當前最小的還要小的數。pop時,如果stack最小的數pop出,min ...