无码av一区二区三区无码,在线观看老湿视频福利,日韩经典三级片,成 人色 网 站 欧美大片在线观看

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

算法:包含min函數(shù)的棧

2022-08-08 10:13 作者:做架構(gòu)師不做框架師  | 我要投稿


定義棧的數(shù)據(jù)結(jié)構(gòu),請(qǐng)?jiān)谠擃?lèi)型中實(shí)現(xiàn)一個(gè)能夠得到棧的最小元素的 min 函數(shù)在該棧中,調(diào)用 min、push 及 pop 的時(shí)間復(fù)雜度都是 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.

提示

各函數(shù)的調(diào)用總次數(shù)不超過(guò) 20000 次

方法:輔助棧

棧是一種后進(jìn)先出(LIFO)的數(shù)據(jù)結(jié)構(gòu),為了滿(mǎn)足題目的要求,我們建立了一個(gè)輔助棧用于存放最小值,核心思想就是:當(dāng)每入棧一個(gè)值的時(shí)候,同時(shí)輔助棧存入最小值即可。


算法如下:

  • MinStack:分別初始化棧、輔助棧、以及存放到輔助棧最大值(用最大值占位,入棧的時(shí)候不需要判空處理);

  • push:兩個(gè)棧存值,注意輔助棧存值需要進(jìn)行比對(duì)最小值;

  • pop:兩個(gè)棧出棧

  • top:返回棧的頭(新)元素

  • min:返回最小值,直接返回輔助棧的頭元素即可


流程圖說(shuō)明:

代碼如下:

復(fù)雜度分析

  • 時(shí)間復(fù)雜度:對(duì)于題目中的所有操作,時(shí)間復(fù)雜度均為 O(1)。因?yàn)闂5牟迦?、刪除與讀取操作都是 O(1),我們定義的每個(gè)操作最多調(diào)用棧操作兩次。

  • 空間復(fù)雜度:O(n),其中 n 為總操作數(shù)。最壞情況下,我們會(huì)連續(xù)插入 n 個(gè)元素,此時(shí)兩個(gè)棧占用的空間為 O(n)。

END

好兄弟可以點(diǎn)贊并關(guān)注我的公眾號(hào)“javaAnswer”,全部都是干貨。


算法:包含min函數(shù)的棧的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國(guó)家法律
鲁甸县| 临猗县| 麦盖提县| 广德县| 洞口县| 棋牌| 海晏县| 宁蒗| 澄江县| 黄平县| 浪卡子县| 剑阁县| 城口县| 谷城县| 涡阳县| 奉化市| 阿克陶县| 黔西县| 新安县| 克东县| 泾源县| 宁明县| 兖州市| 汾阳市| 雷波县| 富阳市| 岗巴县| 许昌县| 梅州市| 班戈县| 赤城县| 神木县| 南雄市| 邢台市| 邵阳县| 阜新| 招远市| 岚皋县| 庄浪县| 芜湖县| 广宁县|