首页 > 其他分享 >Leetcode刷题day9-栈.队列-栈转队列.队列转栈

Leetcode刷题day9-栈.队列-栈转队列.队列转栈

时间:2023-12-09 22:34:22浏览次数:34  
标签:return day9 队列 self pop 转栈 stack empty

232.用栈实现队列

232. 用栈实现队列 - 力扣(LeetCode)
请你仅使用两个栈实现先入先出队列。队列应当支持一般队列支持的所有操作(pushpoppeekempty):
实现 MyQueue 类:

  • void push(int x) 将元素 x 推到队列的末尾
  • int pop() 从队列的开头移除并返回元素
  • int peek() 返回队列开头的元素
  • boolean empty() 如果队列为空,返回 true ;否则,返回 false

解题思路:
构建两个栈,pop时将in栈元素,顺次添加到out栈中,对out栈pop

class MyQueue():
	def __init__(self):
		self.stack_in = []
		self.stack_out = []

	def push(self,x):
		self.stack_in.append(x)

	def pop(self):
		if self.empty():
			return None
		if not self.stack_out:
			for _ in range(len(self.stack_in)):
				self.stack_out.append(self.stack_in.pop())
		return self.stack_out.pop()


	def peek(self):
		if self.empty():
			return None
		ans = self.pop()
		self.stack_out.append(ans)
		return ans


	def empty(self):
		return not (self.stack_in or self.stack_out)

225.用队列实现栈

225. 用队列实现栈 - 力扣(LeetCode)
请你仅使用两个队列实现一个后入先出(LIFO)的栈,并支持普通栈的全部四种操作(pushtoppop 和 empty)。
实现 MyStack 类:

  • void push(int x) 将元素 x 压入栈顶。
  • int pop() 移除并返回栈顶元素。
  • int top() 返回栈顶元素。
  • boolean empty() 如果栈是空的,返回 true ;否则,返回 false 。

解题思路:
直接使用python内置函数collections中deque

class MyStack():
	def __init__(self):
		self.deque = deque()

	def push(self,x):
		self.deque.append(x)

	def pop(self):
		if self.empty():
			return None
		return self.deque.pop()

	def top(self):
		if self.empty():
			return None
		return self.deque[-1]

	def empty(self):
		return not len(self.deque)

标签:return,day9,队列,self,pop,转栈,stack,empty
From: https://www.cnblogs.com/lzj2023/p/17891924.html

相关文章

  • 第五章 栈与队列part01
    第五章栈与队列part01  232.用栈实现队列  基础逻辑(用于理解,直接运行的话会报错,C++STLstack定义的不太一样):注://C++STLStack的pop还不管弹数,得用top()拿 逻辑Code:classMyQueue{public:  stack<int>stack_Simulate......
  • 【JavaSE】数据结构(栈、队列、数组、链表)
    什么是数据结构?数据结构是计算机底层存储、组织数据的方式,是指数据相互之间是什么方式排列在一起的常见的数据结构栈、队列、数组、链表二叉树、二叉查找树、平衡二叉树、红黑树哈希表栈特点:先进后出队列特点:先进先出数组特点:有索引,内存连续优点:查询速度快O(1)缺点:增......
  • 基于Redis的简易延时队列
    基于Redis的简易延时队列一、背景在实际的业务场景中,经常会遇到需要延时处理的业务,比如订单超时未支付,需要取消订单,或者是用户注册后,需要在一段时间内激活账号,否则账号失效等等。这些业务场景都可以通过延时队列来实现。最近在实际业务当中就遇到了这样的一个场景,需要实现一个......
  • AMQP协议中的,消息队列RabbitMQ,ActiveMQ,Apache Kafka区别是什么?
    都是基于AMQP协议来的一种实现方式。参考chatGPT4回答请使用Markdown表格来展示RabbitMQ、ActiveMQ和ApacheKafka之间的区别:维度RabbitMQActiveMQApacheKafka语言ErlangJavaScala/Java协议AMQP、STOMP、MQTTAMQP、STOMP、OpenWire自定义协议......
  • python实现一个优先级队列
    实现一个优先级队列问题怎样实现一个按优先级排序的队列?并且在这个队列上面每次pop操作总是返回优先级最高的那个元素解决方案下面的类利用heapq模块实现了一个简单的优先级队列:importheapqclassPriorityQueue:def__init__(self):self._queue=[]s......
  • 消息传递:消息队列
    一、消息队列在上一章节消息传递:消息队列中提到PIPE和FIFO是基于字节流的,把这种字节流(没有消息边界)分隔成各个记录的任何方法都得由应用程序来实现。例如提到的一个记录的格式为一行,格式:1234/tmp/fifo.serv。另一方面,PIPE和FIFO有许多规则,制约的open的阻塞与否。当......
  • day10栈与队列
    栈与队列理论基础来源:第5章栈与队列-Hello算法(hello-algo.com)代码随想录(programmercarl.com)提问:C++中stack是容器么?我们使用的stack是属于哪个版本的STL?我们使用的STL中stack是如何实现的?stack提供迭代器来遍历stack空间么?5.1栈「栈stack」是一种遵循......
  • 队列
    队列是先进先出(FIFO,First-In-First-Out)的线性表。队列只允许在后端(称为back,rear,tail)进行插入操作,在前端(称为front,head)进行删除操作。队列的操作入队:在队尾(称为back)进行插入或添加操作;出队:在队头(称为front)进行删除操作。数组模拟队列intq[SIZE],front=1,back=0;  ......
  • 1.消息队列基础
    什么是消息队列?可以把消息队列看作是一个存放消息的容器,当我们需要使用消息的时候,直接从容器中取出消息供自己使用即可。由于队列Queue是一种先进先出的数据结构,所以消费消息时也是按照顺序来消费的。 参与消息传递的双方称为生产者和消费者,生产者负责发送消息,消......
  • 第4章. 队列(Queue)
    队列(Queue)一、队列的基本概念队列是一种特殊的线性表,只能在头尾两端进行操作队尾(rear):只能从队尾添加元素,一般叫做enQueue,入队队头(front):只能从队头移除元素,一般叫做deQueue,出队先进先出的原则,FIRSTINFIRSTOUT,FIFO二、队列的接口设计intsize();//元素的数......