155.最小棧

設(shè)計(jì)一個(gè)有g(shù)etMin功能的棧

要求:pop斧抱、push娇豫、getMin操作的時(shí)間復(fù)雜度都是O(1)耀找,設(shè)計(jì)時(shí)可以使用現(xiàn)成的棧結(jié)構(gòu)

思路:使用兩個(gè)棧此洲,一個(gè)棧stackData用來保存當(dāng)前棧中的元素厂汗,和普通棧沒區(qū)別,另一個(gè)棧stackMin用于保存每一步的最小值呜师。

(1)壓入數(shù)據(jù)規(guī)則

如果當(dāng)前數(shù)據(jù)為newNum娶桦,先將其壓入stackData。然后判斷stackMin是否為空:

  • 如果為空汁汗,則newNum也壓入stackMin
  • 否則衷畦,比較nuwNum和stackMin棧頂元素哪一個(gè)更小
    • 如果newNum更小或者兩者相等,則newNum也壓入stackMin
    • 否則stackMin不壓入任何內(nèi)容

(2)彈出數(shù)據(jù)規(guī)則

先在stackData中彈出棧頂元素知牌,記為value祈争。value等于stackMin的棧頂元素時(shí),彈出該棧頂元素角寸,否則不彈出棧頂元素菩混,返回value。

class MinStack(object):

    def __init__(self):
        self.stackData = []
        self.stackMin = []
        

    def push(self, x):
        self.stackData.append(x)
        if len(self.stackMin) == 0 or x<=self.getMin():
            self.stackMin.append(x)

    def pop(self):
        if len(self.stackData) == 0:
            return
        value = self.stackData.pop()
        if value == self.stackMin[-1]:
            self.stackMin.pop()
        return value
        

    def top(self):
        if len(self.stackData) == 0:
            return
        return self.stackData[-1]
        

    def getMin(self):
        if len(self.stackMin) == 0:
            return
        return self.stackMin[-1]
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末扁藕,一起剝皮案震驚了整個(gè)濱河市沮峡,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌亿柑,老刑警劉巖邢疙,帶你破解...
    沈念sama閱讀 211,290評(píng)論 6 491
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異望薄,居然都是意外死亡疟游,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,107評(píng)論 2 385
  • 文/潘曉璐 我一進(jìn)店門式矫,熙熙樓的掌柜王于貴愁眉苦臉地迎上來乡摹,“玉大人,你說我怎么就攤上這事采转〈狭” “怎么了?”我有些...
    開封第一講書人閱讀 156,872評(píng)論 0 347
  • 文/不壞的土叔 我叫張陵故慈,是天一觀的道長(zhǎng)板熊。 經(jīng)常有香客問我,道長(zhǎng)察绷,這世上最難降的妖魔是什么干签? 我笑而不...
    開封第一講書人閱讀 56,415評(píng)論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮拆撼,結(jié)果婚禮上容劳,老公的妹妹穿的比我還像新娘喘沿。我一直安慰自己,他們只是感情好竭贩,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,453評(píng)論 6 385
  • 文/花漫 我一把揭開白布蚜印。 她就那樣靜靜地躺著,像睡著了一般留量。 火紅的嫁衣襯著肌膚如雪窄赋。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,784評(píng)論 1 290
  • 那天楼熄,我揣著相機(jī)與錄音忆绰,去河邊找鬼。 笑死可岂,一個(gè)胖子當(dāng)著我的面吹牛错敢,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播青柄,決...
    沈念sama閱讀 38,927評(píng)論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼伐债,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼预侯!你這毒婦竟也來了致开?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,691評(píng)論 0 266
  • 序言:老撾萬榮一對(duì)情侶失蹤萎馅,失蹤者是張志新(化名)和其女友劉穎双戳,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體糜芳,經(jīng)...
    沈念sama閱讀 44,137評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡飒货,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,472評(píng)論 2 326
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了峭竣。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片塘辅。...
    茶點(diǎn)故事閱讀 38,622評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖皆撩,靈堂內(nèi)的尸體忽然破棺而出扣墩,到底是詐尸還是另有隱情,我是刑警寧澤扛吞,帶...
    沈念sama閱讀 34,289評(píng)論 4 329
  • 正文 年R本政府宣布呻惕,位于F島的核電站,受9級(jí)特大地震影響滥比,放射性物質(zhì)發(fā)生泄漏亚脆。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,887評(píng)論 3 312
  • 文/蒙蒙 一盲泛、第九天 我趴在偏房一處隱蔽的房頂上張望濒持。 院中可真熱鬧键耕,春花似錦、人聲如沸柑营。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,741評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽由境。三九已至棚亩,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間虏杰,已是汗流浹背讥蟆。 一陣腳步聲響...
    開封第一講書人閱讀 31,977評(píng)論 1 265
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留纺阔,地道東北人瘸彤。 一個(gè)月前我還...
    沈念sama閱讀 46,316評(píng)論 2 360
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像笛钝,于是被迫代替她去往敵國和親质况。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,490評(píng)論 2 348

推薦閱讀更多精彩內(nèi)容

  • 題目 難度:★☆☆☆☆類型:棧 設(shè)計(jì)一個(gè)支持 push玻靡,pop结榄,top 操作,并能在常數(shù)時(shí)間內(nèi)檢索到最小元素的棧囤捻。...
    玖月晴閱讀 1,694評(píng)論 1 0
  • 題目描述 [最小棧] 設(shè)計(jì)一個(gè)支持 push臼朗,pop,top 操作蝎土,并能在常數(shù)時(shí)間內(nèi)檢索到最小元素的棧视哑。 push...
    一只可愛的檸檬樹閱讀 99評(píng)論 0 1
  • 問題描述 設(shè)計(jì)一個(gè)支持 push,pop誊涯,top 操作挡毅,并能在常數(shù)時(shí)間內(nèi)檢索到最小元素的棧。 push(x) --...
    建設(shè)路寡婦村村長(zhǎng)閱讀 272評(píng)論 0 0
  • day61 昨天晚上和朋友出去吃飯暴构,又是一個(gè)酒醉的夜晚跪呈,回家后昏昏沉沉,早上起來被老婆數(shù)落丹壕,交代我的事沒有...
    滴水藏海_c6df閱讀 112評(píng)論 0 0
  • 《資治通鑒》是司馬光編著的庆械。 他編著這本書,是為了給帝王看的菌赖。 我第一次記住了:給帝王看的教科書哦!很多皇帝缭乘,宰相...
    阿部桃桃閱讀 688評(píng)論 1 50