題目描述:
定義棧的資料結構,請在該型別中實現乙個能夠得到棧中所含最小元素的min函式(時間複雜度應為o(1))。
解題思路:
要求實現時間複雜度為o (1)的求棧最小元素min函式的函式,意思就是不用查詢棧的所有元素,始終有乙個資料結構維護棧中的最小元素。因此定義兩個棧,乙個常規棧儲存正常值,另乙個棧維護這個棧中的最小元素。
太坑了,這個題真的太坑了!!!我用牛客網交題,怎麼交也交不過,一直報錯「段錯誤:您的程式發生段錯誤,可能是陣列越界,堆疊溢位(比如,遞迴呼叫層數太多)等情況引起」,原來以為是陣列定義過大,但是我的題目裡沒有陣列,後來發現我把符號「==」寫成了「=」,真的是太坑了!!!忘不掉了,太耽誤做題和寫部落格的時間了。
解題**如下:
class solution
else if(value <= min_sta.top())//這裡應該用小於等於,不是等於,因為可能存在多個最小值都壓入棧內
sta.push(value);
}void pop()
else
}int top()
int min()
};
劍指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 ...