劍指向Offer-Python版 -- 用兩個棧實現隊列

題目描述

用兩個棧來實現一個隊列,完成隊列的Push和Pop操作。 隊列中的元素爲int類型。

# -*- coding:utf-8 -*-
class Solution:
    def push(self, node):
        # write code here
    def pop(self):
        # return xx

思路:

棧 : 後進先出
隊列:先進先出

在這裏插入圖片描述

# -*- coding:utf-8 -*-
class Solution:
    stack = [] # 存儲棧
    assist_stack = [] # 輔助棧

    def push(self, node):
        # write code here
        self.stack.append(node) # 存儲棧 加入元素

    def pop(self):
        # return xx

        while self.stack:  # 當存儲棧中有元素
        	# 將存儲棧末尾元素存入輔助棧 (後進先出)
            self.assist_stack.append(self.stack.pop()) 
        if self.assist_stack:
            return self.assist_stack.pop() # 輔助棧 將結果 先進後出
# -*- coding:utf-8 -*-
class Solution:
    stack = [] # 存儲棧
    assist_stack = [] # 輔助棧

    def push(self, node):
        # write code here
        self.stack.append(node) # 存儲棧 加入元素

    def pop(self):
		# 由於所有元素都存入輔助棧,且pop() 函數每次只彈出一個元素
		if self.assist_stack: # 當輔助棧中存在元素時
            return self.assist_stack.pop() # 輔助棧將結果彈出 (先進後出)
        while self.stack:  # 當存儲棧中有元素
        	# 將存儲棧末尾元素存入輔助棧 (後進先出)
            self.assist_stack.append(self.stack.pop()) 
        if self.assist_stack:
            return self.assist_stack.pop() # 輔助棧 將結果 先進後出
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章