Python兩個棧實現一個隊列


牛客網原題:

用兩個棧來實現一個隊列,完成隊列的Push和Pop操作。 隊列中的元素為int類型。
 
實現這個算法的方式有很多種,這里就寫一種比較簡單易懂的;雖然可能算法和效率上不太出色,當大多數人都應該是一看就能懂;如果要想尋找效率高算法佳的方法,網上搜索一下會找到很多;
 
思路:
1. 將stack1作為存儲空間,將stack2作為臨時緩沖區;也就是stack2輔助stack1做出隊與入隊操作;
2. 入隊時,直接將元素壓入stack1即可;
3. 出隊時,將stack1中的元素依次出棧壓入stack2中,再將stack2的棧頂元素彈出,最后將stack2中的元素再依次出棧壓入stack1中,從而實現元素的出隊,並返回彈出的元素;
4. 更多思路,訪問博客地址:https://www.cnblogs.com/tracyhan/p/5490775.html 
 
代碼:
 1 """
 2 用兩個棧實現一個隊列
 3 """
 4 class Solution:
 5     def __init__(self):
 6         self.stack1 = []
 7         self.stack2 = []
 8 
 9     def push(self, node):
10         # write code here
11         self.stack1.append(node)
12         
13     def pop(self):
14         # return xx
15         if self.stack1 == []:
16             return None
17         else:
18             for i in range(len(self.stack1)):
19                 self.stack2.append(self.stack1.pop())
20             out = self.stack2.pop()
21             for j in range(len(self.stack2)):
22                 self.stack1.append(self.stack2.pop())
23             return out

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM