1. 程式人生 > >劍指Offer-Python-用兩個棧實現佇列

劍指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