劍指Offer-Python-用兩個棧實現佇列
題目:
用兩個棧來實現一個佇列,完成佇列的Push和Pop操作。 佇列中的元素為int型別。
知識點:棧和佇列的區別在於,棧的進出口為同一個,而佇列分出口和進口。這樣導致了棧先進後出,佇列先進先出的特點。
思路:基於佇列和棧的特點,使用兩個棧來模擬一個佇列的兩個進出口。使用棧stack1作為入口,棧stack2作為出口。push()很簡單,pop()的話,如果stack2為空,則將stack1一一出棧再入棧stack2(這樣就實現了最先進入stack1的元素最後入棧stack2,從元素順序來看與佇列一致)。然後再對stack2進行出棧操作。
程式碼
# -*- coding:utf-8 -*-
class Solution:
def __init__(self):
self.stack1 = []
self.stack2 = []
def push(self, node):
# write code here
self.stack1.append(node)
def pop(self):
# return xx
if self.stack2:
return self.stack2.pop()
elif not self.stack1:
return None
else:
while self.stack1:
self.stack2.append(self.stack1.pop())
return self.stack2.pop()
相關推薦
劍指Offer-Python-用兩個棧實現佇列
題目: 用兩個棧來實現一個佇列,完成佇列的Push和Pop操作。 佇列中的元素為int型別。 知識點:棧和佇列的區別在於,棧的進出口為同一個,而佇列分出口和進口。這樣導致了棧先進後出,佇列先進先出的特點。 思路:基於佇列和棧的特點,使用兩個棧來模擬
【劍指offer】用兩個棧實現佇列的入隊出隊操作
劍指offer 題目要求 用兩個棧來實現一個佇列,完成佇列的Push(入棧)和Pop(出棧)操作。 佇列中的元素為int型別 補充 棧的特性:先進後出(LIFO, Last In First Out),類似於水桶。 佇列的特性:先進先出(FIFO, FIFO In Fir
劍指Offer-9 用兩個棧實現佇列
題目: 請用棧實現一個佇列,支援如下四種操作: push(x) – 將元素x插到隊尾; pop(x) – 將隊首的元素彈出,並返回該元素; peek() – 返回隊首元素; empty() – 返回佇列是否為空; 注意: 你只能使用棧的標準操作:push to top,peek/pop
劍指offer 8. 用兩個棧實現佇列
請用棧實現一個佇列,支援如下四種操作: push(x) – 將元素x插到隊尾; pop(x) – 將隊首的元素彈出,並返回該元素; peek() – 返回隊首元素; empty() – 返回佇列是否為空; 注意: 你只能使用棧的標準操作
劍指offer例題——用兩個棧實現隊列
tac 元素 pty cti log 用兩個 數據結構 href 出隊 題目:用兩個棧來實現一個隊列,完成隊列的Push和Pop操作。隊列中的元素為int類型。 首先是概念理解,棧和對列存取的區別 棧(stack)是一種後進先出(last in first out, L
劍指offer:用兩個棧實現一個隊列
ack 特性 壓入 [] elf 即將 init 出隊 劍指offer 題目描述用兩個棧來實現一個隊列,完成隊列的Push和Pop操作。 隊列中的元素為int類型。 類似漢諾塔,當我們需要將棧A下面的元素出棧的時候可以先將棧A中的元素全部逆序壓入到另一個棧B,這時棧B保存
劍指Offer5:用兩個棧實現佇列
思路: 1.初始化兩個棧stack1和stack2。 2.入隊:將元素append進棧stack1 3.出隊:判斷棧stack2是否為空,如果為空,則將棧stack1中所有元素pop,並append進棧stack2,棧stack2再pop出棧; 如果不為空,棧stack1直接p
[劍指offer] --6.用兩個棧來實現一個佇列
題目描述 用兩個棧來實現一個佇列,完成佇列的Push和Pop操作。 佇列中的元素為int型別。 import java.util.Stack; public class Solution { Stack<Integer> stack1 = new Stack&l
(劍指offer)用兩個棧來實現一個佇列
時間限制:1秒 空間限制:32768K 熱度指數:312041 本題知識點: 佇列 棧 題目描述 用兩個棧來實現一個佇列,完成佇列的Push和Pop操作。 佇列中的元素為int型別。 思路 stack1用來入隊。出隊的話,就把stack1依次出棧壓入stack2中,再把stack
劍指offer5:用兩個棧實現隊列
ack color generated port div isempty turn 兩個棧實現隊列 pre 題目描述: 用兩個棧來實現一個隊列,完成隊列的Push和Pop操作。 隊列中的元素為int類型。 思路: 基本操作,棧是後進先出,隊列是先進先出,兩個棧正好反反得正
劍指offer Python版 - 用兩個棧實現佇列
題目描述 用兩個棧來實現一個佇列,完成佇列的Push和Pop操作。 佇列中的元素為int型別。 思路:定義兩個棧stack1, stack2,當push元素時,將其插入進stack1,當pop元素時,若stack2為空,則將stack1中的元素依次彈出,並插入進sta
【劍指offer python】面試題7:用兩個棧實現佇列
題目連結 題目描述 用兩個棧來實現一個佇列,完成佇列的Push和Pop操作。 佇列中的元素為int型別。 solution class Solution: def __
【劍指Offer】17用兩個棧實現佇列
題目描述 用兩個棧來實現一個佇列,完成佇列的Push和Pop操作。 佇列中的元素為int型別 時間限制:1秒;空間限制:32768K 解題思路 由於佇列的特點是先進先出,而棧是先進後出,可以用兩個棧串聯來實現佇列:棧1先進後出,棧1出棧棧2入棧,棧2後進先出,從全域性來看實現了先進先
劍指offer[用兩個棧實現佇列]
劍指offer[用兩個棧實現佇列] 題目描述 思路 程式碼 細節知識 題目描述 用兩個棧來實現一個佇列,完成佇列的Push和Pop操作。 佇列中的元素為int型別。 思路 用第
劍指 Offer - 5:用兩個棧實現佇列
題目描述 用兩個棧來實現一個佇列,完成佇列的Push和Pop操作。 佇列中的元素為int型別 題目連結:https://www.nowcoder.com/practice/54275ddae22f475981afa2244dd448c6 解題思路
用兩個棧實現佇列 劍指offer java
題目描述 用兩個棧來實現一個佇列,完成佇列的Push和Pop操作。 佇列中的元素為int型別。 import java.util.Stack; public class Solution { Stack<Integer> stack1 = new Stack<In
【劍指Offer】9.用兩個棧實現佇列
我們都知道棧是先進後出的,佇列是先進先出的,現在要用兩個棧去實現一個佇列。 解題思路:兩個棧分別為A、B,首先將元素全部入棧到A中,然後在將A棧中元素全部出棧,將出棧元素進入B棧中。  
【劍指offer - C++/Java】5、用兩個棧實現佇列
牛客網題目連結:用兩個棧實現佇列 題目描述: 用兩個棧來實現一個佇列,完成佇列的Push和Pop操作。 佇列中的元素為int型別。 1、題目分析 首先我們知道資料結構中棧與佇列的特性是: 棧:資料先進後出 佇列:資料先進先出 假設現在佇列的兩個
劍指offer刷題之用兩個棧實現佇列
題目描述 用兩個棧來實現一個佇列,完成佇列的Push和Pop操作。 佇列中的元素為int型別。 # -*- coding:utf-8 -*- class Solution: def __init__(self):
《劍指offer》面試題9:用兩個棧實現佇列
題目:用兩個棧實現一個佇列。佇列的宣告如下,請實現它的兩個函式appendTail 和deleteHead ,分別完成在佇列尾部插入節點和在佇列頭部刪除節點的功能。 template <typename T> class CQueue { public: CQueue(vo