用栈实现队列python(leetcode232)
2022/1/1 22:08:49
本文主要是介绍用栈实现队列python(leetcode232),对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
#232. 用栈实现队列
请你仅使用两个栈实现先入先出队列。队列应当支持一般队列支持的所有操作(push
、pop
、peek
、empty
):
python中数组的pop默认是针对数组中的最后一个元素,数组的pop就是栈的pop操作
class MyQueue(object): # 使用两个栈进行模拟队列 def __init__(self): self.stack_in = [] # 输入栈 self.stack_out = [] # 输出栈 def push(self, x): """ :type x: int :rtype: None """ self.stack_in.append(x) def pop(self): """ :rtype: int """ # 数组的pop默认是针对数组中的最后一个元素,数组的pop就是栈的pop操作 # 当输出栈空时,将输入栈的元素全部先pop弹出,再用数组的append压入stack_out, # pop弹出的是最后进入stack_in的元素,append压入后为变为数组的第一个元素,再用pop弹出时是最后被弹出 # 所以stack_in中的第一个进入的元素,进入stack_out后为最后一个元素,pop弹出时为第一个 if self.stack_out: return self.stack_out.pop() else: for i in range(len(self.stack_in)): self.stack_out.append(self.stack_in.pop()) return self.stack_out.pop() def peek(self): """ :rtype: int """ # 返回队列开头的元素 # 利用刚实现的pop操作 # pop会删除元素, res = self.pop() # 假设连续调用两次peek,队列开头的元素就变了,因为上一个开头被pop删除,也会影响其他操作 # 将刚被pop的元素加入stack_out,首先不会影响队列的pop操作, # 其次,下次调用peek之前还会调用pop操作,pop会先弹stack_out的元素,此时stack_out中元素还是开头 self.stack_out.append(res) return res def empty(self): """ :rtype: bool """ # 当输出栈和输入栈同时为空才为空 if self.stack_in or self.stack_out: return False else: return True # Your MyQueue object will be instantiated and called as such: # obj = MyQueue() # obj.push(x) # param_2 = obj.pop() # param_3 = obj.peek() # param_4 = obj.empty()
这篇关于用栈实现队列python(leetcode232)的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-21Python编程基础教程
- 2024-11-20Python编程基础与实践
- 2024-11-20Python编程基础与高级应用
- 2024-11-19Python 基础编程教程
- 2024-11-19Python基础入门教程
- 2024-11-17在FastAPI项目中添加一个生产级别的数据库——本地环境搭建指南
- 2024-11-16`PyMuPDF4LLM`:提取PDF数据的神器
- 2024-11-16四种数据科学Web界面框架快速对比:Rio、Reflex、Streamlit和Plotly Dash
- 2024-11-14获取参数学习:Python编程入门教程
- 2024-11-14Python编程基础入门