包含min函式的棧

2022-08-04 09:33:12 字數 953 閱讀 7294

時間限制:c/c++ 1秒,其他語言2秒 空間限制:c/c++ 32m,其他語言64m 

定義棧的資料結構,請在該型別中實現乙個能夠得到棧中所含最小元素的min函式(時間複雜度應為o(1))。

注意:保證測試中不會當棧為空的時候,對棧呼叫pop()或者min()或者top()方法。

思路:第一眼看到這個題目,真是一臉懵逼,無從下手

題目的目的很明確要實現輸出棧中的最小元素的函式,使用棧的資料結構,所以需要定義stack型別的變數,需要實現push函式,pop函式,top函式等

設立兩個stackdate和stackmin,乙個就是普通的棧,另外乙個儲存push進來的最小值。(stackmin的作用相當於是用於檢索stackdata中最小元素位置,)

push壓棧:

每次壓入的資料newnum都push進stackdate中,然後判斷stackmin是否為空,如果為空那也把newnum同步壓入stackmin裡;如果不為空,就先比newnum和stackmin中棧頂元素的大小,如果newnum較大,那就不壓入stackmin裡,否則就同步壓入stackmin裡。

pop出棧:

和push操作相對應,判斷stackdata棧頂元素是否與stackmin棧頂元素相同(stackmin中元素 <= stackdata元素),如果相等,兩個棧都彈出棧頂元素,不過不相等就stackdata彈出

**如下:

class

solution

void

pop()

inttop()

intmin()

};

附上堆疊stack的基本操作:

js 包含min函式的棧 包含min函式的棧

目標 定義棧的資料結構,請在該型別中實現乙個能夠得到棧的最小元素的 min 函式在該棧中,呼叫 min push 及 pop 的時間複雜度都是 o 1 設計思路 我們要做的是在我們每次資料入棧的時候,記錄當前資料棧中最小值,並且在pop 出棧之後依然能找到最小值 方案 如果只用乙個 min 變數來儲...

包含min函式的棧

題目描述 定義棧的資料結構,請在該型別中實現乙個能夠得到棧最小元素的min函式。輸入 輸入可能包含多個測試樣例,輸入以eof結束。對於每個測試案例,輸入的第一行為乙個整數n 1 n 1000000 n代表將要輸入的操作的步驟數。接下來有n行,每行開始有乙個字母ci。ci s 時,接下有乙個數字k,代...

包含min函式的棧

1.問題描述 定義棧的資料結構,請在該型別中實現乙個能夠得到棧的最小元素的函式,在該棧中呼叫min,push及pop的時間複雜度都為o 1 來自 劍指offer 2.分析 我們可以使用乙個輔助棧,專門來處理題目中得到棧的最小元素的函式時間複雜度為o 1 的這個需求。當我們壓棧時,另外乙個棧正常進行,...