LeetCode 232. 用棧實(shí)現(xiàn)隊(duì)列(Implement Queue using Stacks)

LeetCode.jpg

目錄鏈接:http://www.reibang.com/p/9c0ada9e0ede

用棧實(shí)現(xiàn)隊(duì)列

用棧實(shí)現(xiàn)隊(duì)列(Implement Queue using Stacks)

使用棧實(shí)現(xiàn)隊(duì)列的下列操作:

push(x) -- 將一個(gè)元素放入隊(duì)列的尾部工扎。
pop() -- 從隊(duì)列首部移除元素陪毡。
peek() -- 返回隊(duì)列首部的元素画切。
empty() -- 返回隊(duì)列是否為空裹纳。
示例:

MyQueue queue = new MyQueue();

queue.push(1);
queue.push(2);
queue.peek(); // 返回 1
queue.pop(); // 返回 1
queue.empty(); // 返回 false
說明:

你只能使用標(biāo)準(zhǔn)的棧操作 -- 也就是只有 push to top, peek/pop from top, size, 和 is empty 操作是合法的屿讽。
你所使用的語言也許不支持棧邑蒋。你可以使用 list 或者 deque(雙端隊(duì)列)來模擬一個(gè)棧歇竟,只要是標(biāo)準(zhǔn)的棧操作即可。
假設(shè)所有操作都是有效的 (例如滔吠,一個(gè)空的隊(duì)列不會(huì)調(diào)用 pop 或者 peek 操作)纲菌。

切題

一、Clarification

沒有特別需要注意的邊界問題

二疮绷、Possible Solution

隊(duì)列先入先出翰舌,棧先入后出,需要兩個(gè)棧inputstack冬骚、outputstack 來實(shí)現(xiàn)隊(duì)列的功能椅贱。
push 直接入inputstack棧;
pop 只冻、 peek 先看outputstack棧是否有元素庇麦,有就從棧頂取,如果沒有從inputstack棧依次出棧喜德,并將出棧元素依次入outputstack棧直到inputstack為空山橄,再看outputstack棧是否有元素
empty 需要判斷兩個(gè)棧inputstack、outputstack 是否為都為空

Python3 實(shí)現(xiàn)

出入雙棧 Py3

用棧實(shí)現(xiàn)隊(duì)列(Implement Queue using Stacks) Py3 出入雙棧實(shí)現(xiàn)

#@author:leacoder
#@des: 用棧實(shí)現(xiàn)隊(duì)列
class MyQueue:

    def __init__(self):
        self.inputstack = []
        self.outputstack = []
        

    def push(self, x: int) -> None:
        self.inputstack.append(x)
        

    def pop(self) -> int:
        if 0!=len(self.outputstack):
            return self.outputstack.pop()
        else:
            while 0!=len(self.inputstack):     
                self.outputstack.append(self.inputstack.pop())      
            return self.outputstack.pop()        

    def peek(self) -> int:
        if 0!=len(self.outputstack):
            return self.outputstack[-1]
        else:
            while 0!=len(self.inputstack):
                self.outputstack.append(self.inputstack.pop())
            return self.outputstack[-1]

    def empty(self) -> bool:
        return 0==len(self.inputstack) and 0==len(self.outputstack)
        

# Your MyQueue object will be instantiated and called as such:
# obj = MyQueue()
# obj.push(x)
# param_2 = obj.pop()
# param_3 = obj.peek()
# param_4 = obj.empty()

1.push(x) -- 將x放入 入棧(inputstack )
2.pop() -- 判斷 出棧(outputstack)是否為空舍悯,不為空從出棧(outputstack)直接取元素航棱;為空則先將入棧(inputstack)所有元素依次取出放入出棧(outputstack)中,再從出棧(outputstack)取元素
3.peek() -- 同pop()
4.empty() -- 判斷出入棧是否都為空(inputstack 贱呐、outputstack)

Java 實(shí)現(xiàn)

出入雙棧 Java

實(shí)現(xiàn)邏輯不變
用棧實(shí)現(xiàn)隊(duì)列(Implement Queue using Stacks) Java 出入雙棧實(shí)現(xiàn)

C++實(shí)現(xiàn)

出入雙棧 C++

用棧實(shí)現(xiàn)隊(duì)列(Implement Queue using Stacks) C++ 出入雙棧實(shí)現(xiàn)


GitHub鏈接:
https://github.com/lichangke/LeetCode
知乎個(gè)人首頁:
https://www.zhihu.com/people/lichangke/
個(gè)人Blog:
https://lichangke.github.io/
歡迎大家來一起交流學(xué)習(xí)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末丧诺,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子奄薇,更是在濱河造成了極大的恐慌,老刑警劉巖抗愁,帶你破解...
    沈念sama閱讀 218,607評論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件馁蒂,死亡現(xiàn)場離奇詭異呵晚,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)沫屡,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,239評論 3 395
  • 文/潘曉璐 我一進(jìn)店門饵隙,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人沮脖,你說我怎么就攤上這事金矛。” “怎么了勺届?”我有些...
    開封第一講書人閱讀 164,960評論 0 355
  • 文/不壞的土叔 我叫張陵驶俊,是天一觀的道長。 經(jīng)常有香客問我免姿,道長饼酿,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,750評論 1 294
  • 正文 為了忘掉前任胚膊,我火速辦了婚禮故俐,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘紊婉。我一直安慰自己药版,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,764評論 6 392
  • 文/花漫 我一把揭開白布喻犁。 她就那樣靜靜地躺著槽片,像睡著了一般。 火紅的嫁衣襯著肌膚如雪株汉。 梳的紋絲不亂的頭發(fā)上筐乳,一...
    開封第一講書人閱讀 51,604評論 1 305
  • 那天,我揣著相機(jī)與錄音乔妈,去河邊找鬼蝙云。 笑死,一個(gè)胖子當(dāng)著我的面吹牛路召,可吹牛的內(nèi)容都是我干的勃刨。 我是一名探鬼主播,決...
    沈念sama閱讀 40,347評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼股淡,長吁一口氣:“原來是場噩夢啊……” “哼身隐!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起唯灵,我...
    開封第一講書人閱讀 39,253評論 0 276
  • 序言:老撾萬榮一對情侶失蹤贾铝,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體垢揩,經(jīng)...
    沈念sama閱讀 45,702評論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡玖绿,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,893評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了叁巨。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片斑匪。...
    茶點(diǎn)故事閱讀 40,015評論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖锋勺,靈堂內(nèi)的尸體忽然破棺而出蚀瘸,到底是詐尸還是另有隱情,我是刑警寧澤庶橱,帶...
    沈念sama閱讀 35,734評論 5 346
  • 正文 年R本政府宣布贮勃,位于F島的核電站,受9級特大地震影響悬包,放射性物質(zhì)發(fā)生泄漏衙猪。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,352評論 3 330
  • 文/蒙蒙 一布近、第九天 我趴在偏房一處隱蔽的房頂上張望垫释。 院中可真熱鬧,春花似錦撑瞧、人聲如沸棵譬。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,934評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽订咸。三九已至,卻和暖如春酬诀,著一層夾襖步出監(jiān)牢的瞬間脏嚷,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,052評論 1 270
  • 我被黑心中介騙來泰國打工瞒御, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留父叙,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,216評論 3 371
  • 正文 我出身青樓肴裙,卻偏偏與公主長得像趾唱,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個(gè)殘疾皇子蜻懦,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,969評論 2 355

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