使用棧實(shí)現(xiàn)隊(duì)列的下列操作:
創(chuàng)新互聯(lián)公司專注于企業(yè)成都全網(wǎng)營(yíng)銷(xiāo)、網(wǎng)站重做改版、梁河網(wǎng)站定制設(shè)計(jì)、自適應(yīng)品牌網(wǎng)站建設(shè)、成都h5網(wǎng)站建設(shè)、電子商務(wù)商城網(wǎng)站建設(shè)、集團(tuán)公司官網(wǎng)建設(shè)、外貿(mào)網(wǎng)站制作、高端網(wǎng)站制作、響應(yīng)式網(wǎng)頁(yè)設(shè)計(jì)等建站業(yè)務(wù),價(jià)格優(yōu)惠性價(jià)比高,為梁河等各大城市提供網(wǎng)站開(kāi)發(fā)制作服務(wù)。
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
說(shuō)明:
你只能使用標(biāo)準(zhǔn)的棧操作 -- 也就是只有?push to top
,?peek/pop from top
,?size
, 和?is empty
?操作是合法的。
你所使用的語(yǔ)言也許不支持棧。你可以使用 list 或者 deque(雙端隊(duì)列)來(lái)模擬一個(gè)棧,只要是標(biāo)準(zhǔn)的棧操作即可。
假設(shè)所有操作都是有效的 (例如,一個(gè)空的隊(duì)列不會(huì)調(diào)用 pop 或者 peek 操作)。
from?collections?import?deque class?Stack: ????def?__init__(self): ????????self.items?=?deque() ????def?push(self,?val): ????????return?self.items.append(val) ????def?pop(self): ????????return?self.items.pop() ????def?top(self): ????????return?self.items[-1] ????def?empty(self): ????????return?len(self.items)?==?0 class?MyQueue: ????def?__init__(self): ????????""" ????????Initialize?your?data?structure?here. ????????""" ????????self.s1?=?Stack() ????????self.s2?=?Stack() ????def?push(self,?x:?int)?->?None: ????????""" ????????Push?element?x?to?the?back?of?queue. ????????""" ????????self.s1.push(x) ????def?pop(self)?->?int: ????????""" ????????Removes?the?element?from?in?front?of?queue?and?returns?that?element. ????????""" ????????if?not?self.s2.empty(): ????????????return?self.s2.pop() ????????while?not?self.s1.empty(): ????????????val?=?self.s1.pop() ????????????self.s2.push(val) ????????return?self.s2.pop() ????def?peek(self)?->?int: ????????""" ????????Get?the?front?element. ????????""" ????????if?not?self.s2.empty(): ????????????return?self.s2.top() ????????while?not?self.s1.empty(): ????????????val?=?self.s1.pop() ????????????self.s2.push(val) ????????return?self.s2.top() ????def?empty(self)?->?bool: ????????""" ????????Returns?whether?the?queue?is?empty. ????????""" ????????return?self.s1.empty()?and?self.s2.empty() #?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()
執(zhí)行用時(shí) :?52 ms, 在Implement Queue using Stacks的Python3提交中擊敗了73.85% 的用戶
內(nèi)存消耗 :?13.2 MB, 在Implement Queue using Stacks的Python3提交中擊敗了42.13% 的用戶