代码随想录 Day 10 | 【第五章 栈与队列】 232.用栈实现队列 、225. 用队列实现栈 、20. 有效的括号 、1047. 删除字符串中的所有相邻重复项

Pandas入门教程(二十二):股票数据分析实战——yfinance 获取数据、技术指标与收益率分析 把 Pandas 用在真实场景,才能体会它的价值。本文以茅台股票为例,用 yfinance 获取历史行情,完成缺失值处理与列筛选,绘制收盘价曲线,计算 SMA 移动平均线与 RSI 相对强弱指数,并通过日收益率、累计收益率和波动率完成完整的量化分析流程。 阅读详情

一、 232.用栈实现队列 

1. 看完代码随想录的想法

(1)实现MyQueue类:必须定义两个栈,分别是进栈和出栈;

(2)调用进栈append()函数,将元素添加进入进栈内;

(3)定义判断空栈的函数,因为要求队列为空返回true,所以在调用进/出栈之前加上not;

(4)移除队列开头元素并将其返回:首先对self调用empty进行判断,如果为空,直接返回None;然后判断出栈是否为空,出栈如果不为空,则直接弹出元素,如果出栈为空,则需要将入栈的全部元素添加进入出栈中,入栈元素弹出,然后出栈添加元素,最后返回出栈的第一个元素;

(5)返回队列开头的元素:直接调用pop函数,将元素添加进出栈中,最终return即可。

class MyQueue:
# 实现 MyQueue 类:

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

    def push(self, x: int) -> None:
    # void push(int x) 将元素 x 推到队列的末尾
        self.stack_in.append(x)

    def pop(self) -> int:
    # int pop() 从队列的开头移除并返回元素
        if self.empty():
            return None
        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) -> int:
    # int peek() 返回队列开头的元素
        ans = self.pop()
        self.stack_out.append(ans)
        return ans

    def empty(self) -> bool:
    # boolean empty() 如果队列为空,返回 true ;否则,返回 false
        return not (self.stack_in or self.stack_out)

2. 实现过程中遇到的困难及解决

        在push数据的时候,只要数据放进输入栈就好,但在pop的时候,操作就复杂一些,输出栈如果为空,就把进栈数据全部导入进来(注意是全部导入),再从出栈弹出数据,如果输出栈不为空,则直接从出栈弹出数据就可以了。

        最后如何判断队列为空:如果进栈和出栈都为空的话,说明模拟的队列为空了。

二、225. 用队列实现栈

1. 看完代码随想录的想法

        法1 单队列法:一个队列在模拟栈弹出元素的时候只要将队列头部的元素(除了最后一个元素外) 重新添加到队列尾部,此时再去弹出元素就是栈的顺序了。

        法2 双队列法:队列是先进先出的,如果要在某队列中弹出最后一个元素,也就是第一个弹出最后一个元素,那么可以将前n-1个元素放进另一个队列,再弹出最后一个元素。

class MyStack:
# 实现 MyStack 类

    def __init__(self):
        self.que = deque()

    def push(self, x: int) -> None:
    # void push(int x) 将元素 x 压入栈顶
        self.que.append(x)
        

    def pop(self) -> int:
    # int pop() 移除并返回栈顶元素
        if self.empty():
            return None
        for i in range(len(self.que)-1):
            self.que.append(self.que.popleft())
        return self.que.popleft()
        

    def top(self) -> int:
    # int top() 返回栈顶元素
        if self.empty():
            return None
        for i in range(len(self.que)-1):
            self.que.append(self.que.popleft())
        temp = self.que.popleft()
        self.que.append(temp)
        return temp


    def empty(self) -> bool:
    # boolean empty() 如果栈是空的,返回 true ;否则,返回 false 
        return not self.que


# Your MyStack object will be instantiated and called as such:
# obj = MyStack()
# obj.push(x)
# param_2 = obj.pop()
# param_3 = obj.top()
# param_4 = obj.empty()

三、20. 有效的括号

1. 看完代码随想录的想法

整体思路:

        遍历字符串,看到左括号“(” ,就将右括号“ )”放进栈中;看到左方括号“[”,就将右方括号“]”放进栈中;看到左花括号“{”,就将右花括号“}”放进栈中;

        如果遍历到右方向括号就与栈中括号做匹配,如果一直就弹出栈中括号,直到遍历完所有字符并且栈中元素为空,则说明完全匹配;

        那么不匹配总共可能出现三种情况:A.遍历完成字符串,栈中还剩元素没有被匹配;B.字符串还有右方向括号,但栈中已空,没有字符与其匹配;C.匹配过程中括号类型不同,匹配失败。

class Solution:
    def isValid(self, s: str) -> bool:
        stack = []
        for i in s:
            if s == '[':
                stack.append(']')
            elif s == '(':
                stack.append(')')
            elif s == '{':
                stack.append('}')
            elif not stack or stack[-1] != i:
                return False
            else:
                stack.pop()
        return True if not stack else False

四、1047. 删除字符串中的所有相邻重复项

1. 看完代码随想录的想法

(1)对于本题目,遍历字符串中每个字符,遇到相邻元素相同则消除,会存在消除后前面的旧元素又可以与新元素进行消除,所以沿用上一题目的思路,既需要匹配又需要消除的题目,可以使用栈来解决。

(2)首先初始化定义一个栈,然后遍历整个字符串中字符,如果栈不为空并且当前遍历的字符与栈顶字符相等,那么就将栈顶字符弹出,实现了遇到相同字符则消除的要求;如果栈为空或者栈中已有字符与当前字符不相等,那么将该字符加入栈;最后将栈中字符进行拼接并返回,就得到我们所需的删除字符串中所有相邻重复项。

class Solution:
    def removeDuplicates(self, s: str) -> str:
        stack  = []
        for i in s:
            if stack and stack[-1] == i:
                stack.pop()
            else:
                stack.append(i)
        return "".join(stack)

如何处理动态语言(Python / JS)的“隐形”调用链? 本文揭示动态语言(Python/JS)中静态AST解析导致调用链“断链”的核心问题,提出通过运行时追踪补全图谱的解决方案。基于Code-Graph-RAG的cgr trace机制,分别利用pytest插件与V8 Profiler捕获真实调用路径,将动态边合并至静态图谱,并在权重体系中提升动态边优先级。实践表明,该方法可显著提升图谱覆盖率,实现“结构+行为”双视角理解代码,为MCP与Rerank系统提供可靠支持。 阅读详情

相关推荐

别再死记硬背了!用‘小乌龟’实战图解ROS1核心指令(rosnode/rostopic/rosparam保姆级手册)

本文通过经典的turtlesim乌龟仿真器,以可视化实战方式讲解ROS1核心指令(rosnode/rostopic/rosparam),帮助初学者摆脱死记硬背,在操控乌龟的过程中轻松掌握节点管理、话题通信和参数设置等ROS1核心概念。

weixin_28731223的博客 370

代码随想录算法训练营day10(python版)| 第五章 栈与队列part01|232.用栈实现队列225. 用队列实现栈20. 有效的括号1047. 删除字符串中的所有相邻重复项

理论基础了解一下 栈与队列的内部实现机制,文中是以C++为例讲解的。232.用栈实现队列大家可以先看视频,了解一下模拟的过程,然后写代码会轻松很多。

qq_43752779的博客 914

openEuler 欧拉 安装Oracle19c数据库RPM包安装

欧拉系统安装部署oracle 19c rpm方式

陈苏漾的IT生涯 6893

代码训练营 day 10|LeetCode 232,LeetCode 225,LeetCode 20,LeetCode 1047

今天主要学习了栈和队列的一系列操作,感觉是比较熟悉的内容,做起来很快。加油,坚持打卡的第十天。

qq_44639909的博客 1080

基于Pixi.js的Live2D看板娘离线加载实战指南

本文详细介绍了基于Pixi.js实现Live2D看板娘离线加载的完整方案,涵盖环境搭建、模型加载、交互功能实现及常见问题解决。通过Pixi.js的硬件加速优势,开发者可在Web和Electron项目中无缝集成离线运行的Live2D模型,提升用户体验并避免网络依赖问题。

weixin_29001423的博客 343

手把手教你用STM32CubeMX配置WS2812的PWM+DMA驱动(附完整代码)

本文详细介绍了如何使用STM32CubeMX配置PWM+DMA驱动WS2812全彩灯带,包括硬件选型、STM32F103C8T6的时钟配置、定时器与PWM设置、DMA传输优化等关键步骤,并提供了完整的代码实现和常见问题解决方案,帮助开发者高效控制WS2812灯带。

weixin_30859423的博客 440

代码随想录 day 10 栈与队列

要知道栈为什么适合做这种类似于爱消除的操作,因为栈帮助我们记录了 遍历数组当前元素时候,前一个元素是什么。大家先自己思考一下 有哪些不匹配的场景,在看视频 我讲的都有哪些场景,落实到代码其实就容易很多了。可能大家惯性思维,以为还要两个队列来模拟栈,其实只用一个队列就可以模拟栈了。总是比较相邻的元素,要考虑不匹配的情况有哪些,这样才能写出正确的代码。俩个队列,一个队列传输到另一个队列的最后一个元素就是要弹出的元素。讲完了栈实现队列,队列实现栈,接下来就是栈的经典应用了。输入栈和输出栈,做一个模拟的过程。

weixin_45549711的博客 808

29、机器人动力学中的欧拉 - 拉格朗日与哈密顿力学

本文深入探讨了机器人动力学中的欧拉-拉格朗日与哈密顿力学框架,涵盖向量流形上的辛结构、哈密顿方程的几何代数表述、泊松括号与积分不变量等核心概念。文章详细推导了机电系统中拉格朗日量与哈密顿量的构建方法,并结合牛顿-欧拉算法给出了局部哈密顿量和动量导数的迭代计算流程,适用于多关节机器人的动力学建模与控制设计。通过应用案例展示了理论在双关节机器人手臂中的实际运用,最后展望了其在优化控制、鲁棒性提升及智能融合方向的潜力。

perl8的博客 129

代码随想录day10

用途虚拟机栈:用于支持Java方法的执行。本地方法栈:用于支持本地方法的执行。数据类型虚拟机栈:处理的是Java字节码。本地方法栈:处理的是本地代码(例如C/C++)。实现方式虚拟机栈:由JVM实现。本地方法栈:通常由操作系统提供的栈实现。

cookieeee_的博客 1077

ORB-SLAM2算法部署验证、原理代码和各种改进方法汇总

本文主要汇总个人学习使用ORB-SLAM2算法中参考的相关博客和代码汇总,以及在ORB-SLAM2算法基础上各个改进方法的汇总。

重点记录机器人和自动驾驶相关领域的技术,尤其是计算机视觉,视觉SLAM等,不仅有前言文献或必备算法的学习,也会有实际应用的点滴经验 745

【科研数据获取】根据Excel表个中的企业/公司信息批量获取经纬度坐标,并进行地图可视化

批量获取企业/公司的经纬度坐标,并进行地图可视化1 需求2 实现途径3 需求逐步实现 1 需求 在做项目的时候,老板或者项目答辩时候甲方最喜欢看到的就是可视化结果,尤其是涉及到地图可视化。很多时候会遇到企业/公司的数据,想要做地图可视化,必不可少的就是要获取它们具体地址:第一种就是像查户口一样精准一下具体的城镇街道,还有一种就是经纬度信息,前一种属于文字内容往往用于管理方面,第二种数字信息多用于数据处理与分析。 2 实现途径 获取地理信息数据,自然需要使用到地图的功能,这里直接采用百度地图的拾取坐标系统,

lys_828的博客 2337

代码随想录算法训练营Day9 | 232.用栈实现队列,225. 用队列实现栈,20. 有效的括号,1047. 删除字符串中的所有相邻重复项

little__penguin的博客 447

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

代码随想录 day9:第五章 栈与队列part01

在这里插入图片描述](https://img-blog.csdnimg.cn/direct/fc8a7fc081a14739b28042a51826d0aa.png。

z25735的博客 618

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

代码随想录算法训练营 Day 10,第五章 栈与队列part01,232.用栈实现队列,225. 用队列实现栈,20. 有效的括号, 1047. 删除字符串中的所有相邻重复项

栈与队列理论基础栈与队列理论基础栈提供push 和 pop 等等接口,所有元素必须符合先进后出规则,所以栈不提供走访功能,也不提供迭代器(iterator)。不像是set 或者map 提供迭代器iterator来遍历所有元素。所以STL中栈往往不被归类为容器,而被归类为container adapter(容器适配器)。那么问题来了,STL 中栈是用什么容器实现的?从下图中可以看出,栈的内部结构,栈的底层实现可以是vector,deque,list 都是可以的, 主要就是数组和链表的底层实现。

Icewolf273的博客 316

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

day 10 第五章 栈与队列part01代码随想录算法训练营71期

MyQueue():是 MyQueue 类的无参构造函数,名称必须和类名完全一致,没有返回值(连 void 都不能写)这里函数体为空,是因为示例中 MyQueue 类的成员(stIn、stOut 两个栈)是 C++ 标准库的 stack 类型 —— 标准库容器会自动调用自身的默认构造函数完成初始化,因此无需手动写初始化逻辑。peek() 获取队列头部元素(不删除)时,复用(this->显式调用当前对象的其他成员方法 / 属性,增强代码可读性)弹出逻辑,但需将弹出的元素重新压回输出栈。),另一个栈负责输出(

gu_xin_的博客 183

代码随想录算法训练营DAY10第五章 栈与队列part01

优化:用string充当stack。

2401_88089822的博客 252

AI全栈实战 | 3.9-01 爬虫入门:requests 加 BeautifulSoup 三分钟跑通,但 90% 的人栽在这 4 个“礼貌“问题上

⚠️:本文内容仅用于。请遵守目标站点的服务条款与相关法律法规,不得对目标服务造成负担,不得采集、传播个人隐私数据。技术是中性的,边界在你手里。爬虫的入门技术(requests 发请求 + BeautifulSoup 解析)三分钟就能学会。真正区分"会用爬虫"和"会做爬虫的人"的,是这篇我们跑通"请求→解析→存储"的最小闭环,然后重点把"合规与礼貌"这根弦给你绷上。

源码获取 | 运行部署 | 定制二开修改,如果回复不及时请耐心等待,请见谅。 409

从一段视频到可漫游的 4D 有声场景:思路拆解与最小复现手记

只需一段手机视频,你就能生成可"走进去"的 4D 有声场景:转头时狗叫声方向随之变化,走近时声音更清晰。本文拆解 Video-to-4DAVScene 的核心思路,手把手带你用几十行 Python 搭出最小管线,把视频中的运动物体变成带空间位置的声源,并附上三个真实踩坑的排障经验,代码可直接跑。🎧

helloagent的博客 235

【每天一个 Python 小案例30】Python 基础知识综合小项目:我的工具盒

作为系列收官,本篇把前 29 篇的知识点合成一个能直接用的命令行工具"我的工具盒":计算器(用 ast 解析表达式,不碰 eval)、单位换算与温度转换(一张换算表 + 特例分支)、记账与分类统计(Decimal + JSON 持久化)、以及用"字典当命令表"把菜单和业务逻辑解耦的主循环。文中对比了 eval 的安全隐患与 ast 白名单的做法,解释了 lambda 闭包在字典里的写法与晚绑定陷阱,并在最后给出整个系列的知识地图,把变量、数据结构、控制流、函数、类、异常、文件、标准库八块内容对应到具体篇目。

xinjiyaya的博客 427

详解Python条件语句

在 Python 中,if...else 是一种条件语句,可以根据给定的条件执行不同的操作。这个语句通常用于控制程序的流程。

2601_96798737的博客 208

Python3 协程:异步编程的核心机制与实战

协程是解决I/O密集型任务等待瓶颈的高效机制,相比线程更轻量、无锁开销。从yield到async/await的演进,使异步编程语义清晰、易于理解。通过async/await可实现并发执行多个任务(如gather、create_task),显著提升网络请求、爬虫等场景性能。关键在于使用异步库(如aiohttp)替代同步库,避免阻塞事件循环。合理控制超时与并发数,才能发挥协程最大优势。

Lxn2zh的博客 159

torch.compile 差异仅 1e-6,边界样本预测为何翻转

torch.compile 加速后输出与 eager 不一致,部分预测翻转。逐层对比与 graph break 分析定位到动态分支翻转根因。容差回归仅适用于无分支翻转场景,零容忍场景应禁用编译。

昨日种种,皆成今我。今日种种,皆成新我。 159

二进制木马免杀-Python 分离免杀与 Web 挂马

二进制木马免杀-Python 分离免杀与 Web 挂马

2503_94637398的博客 268

蓝桥杯·全国青少年信息素养大赛·电子学会Python/C++考级 备考:莫队算法离线区间查询详解

备赛进行时:第十八届蓝桥杯软件赛报名已于 2026-10-08 10:00 开启、12-18 14:00 截止,省赛定在 2027-04-10(C/C++·Python 程序设计 9:00–13:00);中国电子学会 2026 年 12 月软件编程(C/C++ 一级至十级、Python 一级至六级)考级报名 9/23–12/2 16:00、统考 12-12;全国青少年信息素养大赛 2026—2027 赛季算法应用主题赛也已进入复盘练兵窗口。

IT_Scratch的博客 139

【Python】国家中小学智慧教育平台电子教材批量下载与 PDF 合成实战

成果:两本语文电子课本(一年级上册 118 页 / 23MB、三年级上册 130 页 / 30.3MB),合计 248 页、约 54MB,单本下载加合成 40~60 秒,PDF 页数校验全部通过。经验教训SPA 站点的数据接口优先从 bundle 里挖,比抓页面稳得多;资源链接要按 private/public 分组看待,只取平台公开部分;页数、目录名这类“可推断”的信息,永远用实际响应验证一次;受限环境里“能不能跑浏览器”要在方案定稿前确认。后续计划:这版 PDF 是图片版,没有文字层;

木头大左的博客 138
上一篇: 代码随想录 Day 9 | 151.翻转字符串里的单词、卡码网:55.右旋转字符串、28. 实现 strStr()、459.重复的子字符串、字符串总结 、双指针回顾
下一篇: 代码随想录 Day 11 | 【第五章 栈与队列】150.逆波兰表达式求值、239.滑动窗口最大值、347.前 K 个高频元素、总结
Accept17
博客等级 码龄4年 479粉丝 43原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值