包含min函式的棧

2021-07-23 10:43:19 字數 662 閱讀 4957

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

思路:

首先想到的是,在將元素壓入棧的時候,將所有元素進行排序,比如壓入元素的順序為 ,第乙個壓入21,第二個壓入3的時候需要將21先取出,然後再壓入3,再壓入21,以此類推,但是這樣並不符合時間複雜度為o(1)。

於是想到,使用乙個成員變數,儲存最小值。例如,當壓入21的時候,最小值為21,壓入3的時候,由於3比21小,則將最小值儲存為3,以此類推。但如果需要得到次小值呢,是否再定義乙個成員變數呢?

如果再想得到再比次小還小的乙個元素呢?再定義乙個成員變數儲存麼?

答案顯然不是,這時候可以考慮用乙個輔助棧來儲存。

**:

public

class minstack21

// 提取棧的第乙個元素

public

void

pop()

}// 將元素壓入棧

public

void

push(int

value) else

}// 返回所有元素的最小值

public

intmin()

}

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 的這個需求。當我們壓棧時,另外乙個棧正常進行,...