棧 佇列 30題 包含min函式的棧

2021-10-14 20:48:17 字數 1116 閱讀 6471

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

示例:

minstack minstack = new minstack();

minstack.push(-2);

minstack.push(0);

minstack.push(-3);

minstack.min(); --> 返回 -3.

minstack.pop();

minstack.top(); --> 返回 0.

minstack.min(); --> 返回 -2.

普通棧的push()和pop()函式的複雜度為o(1);而獲取棧最小值min()函式需要遍歷整個棧,複雜度為o(n)。

**本題難點:**將min()函式複雜度降為o(1),可通過建立輔助棧實現;

因此,只需設法維護好棧b的元素,使其保持非嚴格降序,即可實現min()函式的o(1)複雜度。

*/複雜度分析:

第30題 包含min函式的棧

定義棧的資料結構,請在該型別中實現乙個能夠得到棧中所含最小元素的min函式 時間複雜度應為o 1 1.使用資料棧彈出到輔助棧,再從輔助棧彈回到資料棧,儲存住資料棧的結構 2.資料棧在不斷彈出棧頂元素的過程中,通過乙個變數儲存住最小值。public class solution public void...

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

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

30 包含min函式的棧

定義棧的資料結構,請在該型別中實現乙個能夠得到棧中所含最小元素的min函式 時間複雜度應為o 1 注意 保證測試中不會當棧為空的時候,對棧呼叫pop 或者min 或者top 方法。第一反應對棧內元素排序,把最小元素放在棧頂,但出棧操作不能保證 先出 該方案不行。第二,棧內增加乙個成員變數記錄當前棧的...