当前位置: 首页 > backend >正文

代码随想录算法训练营day8(栈与队列)

华子目录

  • 用栈实现队列
    • 思路

用栈实现队列

  • https://leetcode.cn/problems/implement-queue-using-stacks/description/

在这里插入图片描述

push(x) -- 将一个元素放入队列的尾部。
pop() -- 从队列首部移除元素。
peek() -- 返回队列首部的元素。
empty() -- 返回队列是否为空。

思路

  • 初始化两个栈,一个in栈,一个out栈
  • push()时,直接将元素插入in栈即可
  • pop()时,如果out栈,要将in栈中的所有元素导入out栈;如果out栈不为,将元素弹出即可
  • peek()pop()一样,但是不用弹出
  • 如果in栈out栈都为,则说明队列为空
class MyQueue:def __init__(self):self.stack_in = []self.stack_out = []def push(self, x: int) -> None:self.stack_in.append(x)def pop(self) -> int:if self.empty():return Noneif self.stack_out:return self.stack_out.pop()else:while self.stack_in:tmp = self.stack_in.pop()self.stack_out.append(tmp)return self.stack_out.pop()def peek(self) -> int:if self.empty():return Noneif self.stack_out:return self.stack_out[-1]else:while self.stack_in:tmp = self.stack_in.pop()self.stack_out.append(tmp)return self.stack_out[-1]def empty(self) -> bool:if not self.stack_in and not self.stack_out:return Truereturn False# 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()
http://www.xdnf.cn/news/952.html

相关文章:

  • 个性化的配置AndroidStudio
  • MySQL-存储过程--游标
  • 腾讯IMA深度使用指南:从下载安装到高效应用
  • 安全协议分析概述
  • 10天学会嵌入式技术之51单片机-day-3
  • CSS文本属性
  • Java 泛型使用教程
  • 力扣第446场周赛
  • 时序逻辑入门指南:LTL、CTL与PTL的概念介绍与应用场景
  • Typescript中的泛型约束extends keyof
  • 速查手册:TA-Lib 超过150种量化技术指标计算全解 - 7. Pattern Recognition(模式识别)
  • ubuntu学习day4
  • SaltStack远程协助工具
  • Oracle for Linux安装和配置(11)——Linux配置
  • Franka机器人ROS 2来袭:解锁机器人多元应用新可能
  • SpringBoot + Vue 实现云端图片上传与回显(基于OSS等云存储)
  • 单片机可以用来做机器人吗?
  • 超详细实现单链表的基础增删改查——基于C语言实现
  • 聚类算法(K-means、DBSCAN)
  • 基于DeepSeek/AI的资产测绘与威胁图谱构建
  • Java高频面试之并发编程-04
  • LangGraph(一)——QuickStart样例中的第一步
  • linux sysfs的使用
  • XAttention
  • 初识Redis · C++客户端list和hash
  • 爬楼梯(每日一题-简单)
  • 240422 leetcode exercises
  • 13 数据存储单位与 C 语言整数类型:从位到艾字节、常见整数类型及其范围、字面量后缀、精确宽度类型详解
  • Kotlin基础(①)
  • 条件变量底层实现原理