問(wèn)題:用兩個(gè)棧來(lái)實(shí)現(xiàn)一個(gè)隊(duì)列,完成隊(duì)列的 Push 和 Pop 操作。?
?分析:棧的特性是“先進(jìn)后出”,隊(duì)列為“先進(jìn)先出”。
思路:入隊(duì):直接把新元素壓入stack1即可。?
? ? ? ? ? ?出隊(duì):根據(jù)隊(duì)列先進(jìn)先出的性質(zhì),由于先進(jìn)入隊(duì)列的元素被壓倒stack1的棧底,要想實(shí)現(xiàn)先入隊(duì)列的先出隊(duì),需要將stack1中的元素逐個(gè)彈出并壓入stack2,經(jīng)過(guò)彈出和壓入之后最先進(jìn)入的元素就處于stack2的棧頂,有可以直接彈出。
python實(shí)現(xiàn)代碼:
class Solution:
def __init__(self):
# 初始化兩個(gè)空棧
self.stack1 = []
self.stack2 = []
# 實(shí)現(xiàn)入隊(duì)操作
def push(self, node):
# 直接壓入 棧1
self.stack1.append(node)
# 實(shí)現(xiàn)出隊(duì)操作
def pop(self):
if len(self.stack2) == 0:
while self.stack1:
self.stack2.append(self.stack1.pop())
return self.stack2.pop()
?
更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號(hào)聯(lián)系: 360901061
您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長(zhǎng)非常感激您!手機(jī)微信長(zhǎng)按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對(duì)您有幫助就好】元
