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

打卡Day11

  • 1.232.用栈实现队列
  • 2.225. 用队列实现栈
  • 3.20. 有效的括号
  • 4.1047. 删除字符串中的所有相邻重复项

1.232.用栈实现队列

题目链接:用栈实现队列
文档讲解: 代码随想录

思路:需要用两个栈来实现队列的先进先出。一个输入栈,一个输出栈,用来调整数据出栈的顺序。在push数据的时候,只要将数据放入输入栈;而在输出的时候,就需要将数据先读入输出栈,再弹出。弹出数据的过程,要注意判断输出栈是否为空。

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"""if self.empty():return None#当stack_out为空的时候才从stack_in导入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函数ans = self.pop()#因为弹出,所以要再添加进去self.stack_out.append(ans)return ans def empty(self):""":rtype: bool"""#两个栈中都没有元素才为空return not (self.stack_in or self.stack_out)

2.225. 用队列实现栈

题目链接:用队列实现栈
文档讲解: 代码随想录

class MyStack(object):def __init__(self):self.queue_in = deque()self.queue_out = deque()def push(self, x):""":type x: int:rtype: None"""self.queue_in.append(x)def pop(self):""":rtype: int"""#确定是否为空if self.empty():return None#将queue_in中除最后一个元素取出存放在queue_out中for i in range(len(self.queue_in) - 1):self.queue_out.append(self.queue_in.popleft())#将queue_in和queue_out对换self.queue_in, self.queue_out = self.queue_out, self.queue_in#弹出return self.queue_out.popleft()def top(self):""":rtype: int"""ans = self.pop()self.queue_in.append(ans)return ansdef empty(self):""":rtype: bool"""return len(self.queue_in) == 0

3.20. 有效的括号

题目链接:有效的括号
文档讲解: 代码随想录

由于栈结构的特殊性,非常适合做对称匹配类的题目。括号匹配时使用栈解决的经典问题。一共三种情况。
(1)左括号多了。
(2)左右括号不对称。
(3)右括号多了。

class Solution(object):def isValid(self, s):""":type s: str:rtype: bool"""stack = []for item in s:if item == '(':stack.append(')')elif item == '{':stack.append('}')elif item == '[':stack.append(']')#右括号多了或者不匹配elif not stack or stack[-1] != item:return Falseelse:stack.pop()#左括号多了#return True if not stack else Falseif not stack:return Trueelse:return False         
class Solution(object):def isValid(self, s):""":type s: str:rtype: bool"""stack = []mapping = {'(': ')','{': '}','[': ']'}for item in s:if item in mapping.keys():stack.append(mapping[item])elif not stack or stack[-1] != item:return Falseelse:stack.pop()return True if not stack else False

4.1047. 删除字符串中的所有相邻重复项

题目链接:删除字符串中的所有相邻重复项
文档讲解: 代码随想录

class Solution(object):def removeDuplicates(self, s):""":type s: str:rtype: str"""stack= []for item in s:#需要判断stack中有元素if stack and stack[-1] == item:stack.pop()else:stack.append(item)return ''.join(stack)

还有一个双指针的版本,作为如果不让用栈的解决方法。

class Solution(object):def removeDuplicates(self, s):""":type s: str:rtype: str"""#不可以对字符串进行修改res = list(s)slow = fast = 0length = len(s)#用while循环while fast < length:#如果相邻不同res[slow] = res[fast]#如果相邻相同if slow > 0 and res[slow] == res[slow - 1]:slow -= 1else:slow += 1fast += 1return ''.join(res[:slow])

要注意的点就是,最后返回的时候 res 的长度是 0 到 slow。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/39110.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2024年【建筑电工(建筑特殊工种)】考试报名及建筑电工(建筑特殊工种)考试资料

题库来源&#xff1a;安全生产模拟考试一点通公众号小程序 建筑电工(建筑特殊工种)考试报名参考答案及建筑电工(建筑特殊工种)考试试题解析是安全生产模拟考试一点通题库老师及建筑电工(建筑特殊工种)操作证已考过的学员汇总&#xff0c;相对有效帮助建筑电工(建筑特殊工种)考…

10年铲屎官亲自体验后,告诉你好用的空气净化器排名

作为一名资深铲屎官博主&#xff0c;很多铲屎官一到春季换季就开始各种疯狂打喷嚏、全身过敏红肿&#xff0c;这是因为猫咪在换季的时候就疯狂掉毛&#xff0c;家里就想下雪一样&#xff0c;空气中都是猫浮毛。而猫毛上附带的细菌会跟随浮毛被人吸入人体&#xff0c;从而产生打…

【redis】redis发布/订阅模型

1、基本概念 Redis 发布/订阅模型&#xff08;Pub/Sub, Publish/Subscribe&#xff09;是 Redis 提供的一种消息通信模式&#xff0c;它允许发送者&#xff08;发布者&#xff09;发送消息到一个或多个频道&#xff08;channel&#xff09;&#xff0c;而接收者&#xff08;订…

Graspnet复现笔记

前言 参考文章&#xff1a;Baseline model for "GraspNet-1Billion: A Large-Scale Benchmark for General Object Grasping" (CVPR 2020).[paper] [dataset] [API] [doc] 代码仓库&#xff1a;https://github.com/graspnet/graspnet-baseline 一、确定配置 Ubunt…

mysql8 锁表与解锁

方法1不行&#xff0c;就按方法2来执行&#xff1b; (一) 解锁方法1 连接mysql &#xff0c;直接执行UNLOCK TABLES&#xff0c;细节如下&#xff1a; – 查询是否锁表 SHOW OPEN TABLES WHERE in_use >0 ; – 查询进程 show processlist ; – 查询到相对应的进程&#xf…

第26集《大乘起信论》

请大家打开《讲义》第五十五页&#xff0c;癸二、释发心。 在大乘的修学当中&#xff0c;我们成就的第一个功德是信成就发心。信成就发心前面一科&#xff0c;先讲到信心的成就&#xff0c;就是我们依止内外善根的熏习&#xff0c;成就所谓的菩萨种性&#xff0c;对于大乘菩萨…

固态硬盘好用,还是机械硬盘好用?

在当前的电脑存储设备市场中&#xff0c;固态硬盘&#xff08;SSD&#xff09;和机械硬盘&#xff08;HDD&#xff09;是两种最主流的选择。它们各有优缺点&#xff0c;适用于不同的使用场景和需求。本文将详细对比固态硬盘和机械硬盘的性能、价格、耐用性等方面&#xff0c;并…

C# 验证PDF数字签名的有效性

数字签名作为PDF文档中的重要安全机制&#xff0c;不仅能够验证文件的来源&#xff0c;还能确保文件内容在传输过程中未被篡改。然而&#xff0c;如何正确验证PDF文件的数字签名&#xff0c;是确保文件完整性和可信度的关键。本文将详细介绍如何使用免费.NET控件通过C#验证PDF签…

2024年特种设备作业人员考试题库及答案(流动式起重机Q2)

一、单选题 201、起重机制动器的制动带磨损超过原厚度的()时&#xff0c;应更换。 A.0.4 B.0.5 C.0.6 答案&#xff1a;B 202、履带式起重机自行转移时&#xff0c;每行驶&#xff08;&#xff09;小时&#xff0c;应对行走机构进行检查和润滑。 …

js制作随机四位数验证码图片

<div class"lable lable2"><div class"l"><span>*</span>验证码</div><div class"r"><input type"number" name"vercode" placeholder"请输入验证码"></div>&l…

window系统openssl开发环境搭建(VS2017)

window系统openssl开发环境搭建 VS2017 一、下载openssl二、安装openssl三、openssl项目配置3.1 配置include文件3.2 配置openssl动态库四、编写openssl测试代码五、问题总结5.1 问题 一5.2 问题二一、下载openssl https://slproweb.com/products/Win32OpenSSL.html 根据自己…

2024年地球生态学与绿色发展国际会议 (EEGD 2024)

2024年地球生态学与绿色发展国际会议 (EEGD 2024) International Conference on Earth Ecology and Green Development in 2024 【重要信息】 大会地点&#xff1a;济南 大会官网&#xff1a;http://www.iceegd.com 投稿邮箱&#xff1a;iceegdsub-conf.com 【注意&#xff1a…

【docker】容器内配置环境变量

背景&#xff1a; 我要把下面的环境变量写到bash脚本里&#xff0c;起名叫environment_start.sh。 目的&#xff1a; 用于每次进入容器dev_into.sh的时候&#xff0c;让系统获取到环境变量。 先进入容器找个合适的位置写环境变量bash脚本&#xff0c;environment_start.sh …

当下环境下如何提升自己以拥抱未来的机会-程序员的自我提升

一、前言 看看今年的行情,无论是国内还是国外,仿佛都没有什么活力,经济下行压力越来越大,企业经营越来越困难。对于程序员的工作机会越来越少。这可能是现阶段乃至几年内的现象。现在是现金为王,拥有其他资产仿佛没有多大的增值空间,经济一片惨淡,消费不活跃,我看到的…

电脑重启后,不能远程连接服务器,该如何解决

文章目录 前言&#xff1a;系统情况&#xff1a;情况一&#xff1a;先检查网络连接情况情况二&#xff1a;检查服务器的 ssh 服务器转态情况三&#xff1a; 检查防火墙设置情况四&#xff1a;检查 SSH 配置文件情况五&#xff1a;其他可能性 前言&#xff1a; 电脑重启后&…

LLM RAG with Agent

题意&#xff1a;基于代理的LLM检索增强生成 问题背景&#xff1a; I was trying the application code in the link. 我正在尝试链接中的应用程序代码。 I am using the following Llang Chain version 我正在使用以下Llang Chain版本 langchain 0.0.327 langchain-commun…

云数据中心运维新纪元:让Linux服务器如虎添翼

文章目录 一、Linux系统管理的高级技巧1. 性能调优与监控&#xff1a;2. 自动化与脚本编写&#xff1a;3. 文件系统与存储管理&#xff1a; 二、服务器配置优化的策略1. 硬件选型与配置&#xff1a;2. 网络配置与优化&#xff1a;3. 应用部署与调优&#xff1a; 三、安全策略的…

极速升级:MacOS系统中Pip源的切换指南

极速升级&#xff1a;MacOS系统中Pip源的切换指南 在MacOS系统中&#xff0c;Python的包管理工具Pip是我们管理和安装Python库的得力助手。然而&#xff0c;默认的Pip源在国外&#xff0c;对于国内用户来说&#xff0c;访问速度可能较慢。因此&#xff0c;更换Pip源以提高下载…

工厂模式-实现

一.工厂模式 通过使用工厂模式&#xff0c;可以将对象的创建逻辑封装在一个工厂类中&#xff0c;而不是在客户端代码中直接实例化对象&#xff0c;这样可以提高代码的可维护性和可扩展性 Demo:以协议为例 1.抽象接口 public interface IProtocolGateWay{string ProtocolType{…

SMARTFORMS

page&#xff08;节点&#xff09;-> wondows(容器)