[豪の算法奇妙冒险] 代码随想录算法训练营第十天 | 232-用栈实现队列、225-用队列实现栈、20-有效的括号、1047-删除字符串中的所有相邻重复项

news/2025/11/30 20:01:22/文章来源:https://www.cnblogs.com/SchwarzShu/p/19290099

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


LeetCode232 用栈实现队列

题目链接:https://leetcode.cn/problems/implement-queue-using-stacks/description/

文章讲解:https://programmercarl.com/0232.用栈实现队列.html

视频讲解:https://www.bilibili.com/video/BV1nY4y1w7VC/?vd_source=b989f2b109eb3b17e8178154a7de7a51

​ 这题要用栈来实现队列的先进先出,但是栈是先进后出的,因此我们可以设置两个栈来模拟队列,一个作为入栈,一个作为出栈

​ 元素一开始放进入栈,要取的时候再从入栈放入出栈,再从出栈拿元素,这样元素就是先进先出

image-20251130171920310

class MyQueue {Stack<Integer> stackIn;Stack<Integer> stackOut;public MyQueue() {stackIn = new Stack<>();stackOut = new Stack<>();}public void push(int x) {stackIn.push(x);}public int pop() {move();return stackOut.pop();}public int peek() {move();return stackOut.peek();}public boolean empty() {return stackIn.isEmpty() && stackOut.isEmpty();}public void move(){if(!stackOut.empty()){return;}while(!stackIn.isEmpty()){stackOut.push(stackIn.pop());}}
}

LeetCode225 用队列实现栈

题目链接:https://leetcode.cn/problems/implement-stack-using-queues/submissions/681722036/

文章讲解:https://programmercarl.com/0225.用队列实现栈.html

视频讲解:https://www.bilibili.com/video/BV1Fd4y1K7sm/?vd_source=b989f2b109eb3b17e8178154a7de7a51

​ 这里采用一个队列来模拟栈,栈是先进后出,队列是先进先出,当实现栈pop()的时候,要的是队列的队尾元素,所以我们可以将队尾前的元素都出队再入队,这样最前面的那个元素就是之前的队尾元素

image-20251130191441030

class MyStack {Queue<Integer> que;public MyStack() {que = new LinkedList<>();}public void push(int x) {que.offer(x);}public int pop() {move();return que.poll();}public int top() {move();int result = que.poll();que.offer(result);return result;}public boolean empty() {return que.isEmpty();}public void move(){int size = que.size();for(int i = 1; i <= size-1; i++){que.offer(que.poll());}}
}

LeetCode20 有效的括号

题目链接:https://leetcode.cn/problems/valid-parentheses/description/

文章讲解:https://programmercarl.com/0020.有效的括号.html

视频讲解:https://www.bilibili.com/video/BV1AF411w78g/?vd_source=b989f2b109eb3b17e8178154a7de7a51

​ 括号匹配,很经典的栈应用题,遇到左括号将其放入栈,遇到右括号出栈一个元素进行比对,若匹配则可以继续往下遍历括号串,若不匹配则直接return false

​ 注意pop空栈的问题,以及最后记得检查栈是否为空,若不为空说明还有为匹配的左括号,return false

image-20251130193118828

class Solution {public boolean isValid(String s) {Stack<Character> stack = new Stack<>();if(s.length() % 2 != 0){return false;}for(int i = 0; i < s.length(); i++){char ch = s.charAt(i);if(ch == '(' || ch == '[' || ch == '{'){stack.push(ch);}else{if(stack.isEmpty()){return false;}char top = stack.pop();if((ch == ')' && top == '(')||(ch == ']' && top == '[')||(ch == '}' && top == '{')){continue;}else{return false;}}}return stack.isEmpty();}
}

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

题目链接:https://leetcode.cn/problems/remove-all-adjacent-duplicates-in-string/description/

文章讲解:https://programmercarl.com/1047.删除字符串中的所有相邻重复项.html

视频讲解:https://www.bilibili.com/video/BV12a411P7mw/?vd_source=b989f2b109eb3b17e8178154a7de7a51

​ 栈记住了遍历数组当前元素的前一个元素,所以这种相邻元素消除的工作很适合用栈来做

​ 核心逻辑是判断栈顶元素和当前元素是否相同,若相同则一起消除,若不相同则将当前元素入栈

image-20251130195139474

class Solution {public String removeDuplicates(String s) {Stack<Character> stack = new Stack<>();int length = s.length();if(length == 1){return s;}for(int i = 0;i < length;i++){char cur = s.charAt(i);if(stack.isEmpty()){stack.push(cur);}else{char top = stack.peek();if(cur != top){stack.push(cur);}else{stack.pop();}}}StringBuilder result = new StringBuilder();while(!stack.isEmpty()){result.append(stack.pop());}return result.reverse().toString();}
}

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

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

相关文章

过碳酸钠出口厂商有哪些?质量好的过碳酸钠厂家TOP前10精选:过碳酸钠外贸公司推荐名单

过碳酸钠作为环保型精细化工产品,在洗涤、纺织、水处理等领域应用广泛,市场对其出口厂商、有资质供应商及优质外贸贸易公司的需求日益迫切。国内涌现出众多具备生产与出口能力的企业,既涵盖规模化生产厂家,也包括专…

国内哪家成膜助剂供应商比较好?成膜助剂进口CIF价格供应商2025年TOP榜单推荐

成膜助剂作为涂料、日化等行业的关键辅料,其质量与供应稳定性直接影响下游产品的成膜效果、耐候性能及环保属性。在全球涂料行业向绿色化、功能化转型的背景下,低 VOC、高沸点的成膜助剂成为市场主流需求,而 “双碳…

Day51(21)-F:\硕士阶段\Java\课程代码\后端\web-ai-code\springboot-aop-quickstart

登录认证--拦截器Interceptor令牌校验package com.itheima.Interceptor;import jakarta.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletResponse; import lombok.extern.slf4j.Slf4j; imp…

2025/11/27 今天学了string

2025/11/27 今天学了stringstring的创建 string s="abcd"; string s1(s); string c; c.assign("hello"); string e; e.assign(c, 2, 2); 从c的第二个位置取两个出来 cout << e<<e…

2025/11/30 今天没有自我学习

2025/11/30 今天没有自我学习今天把27号的笔记补上了

完整教程:CSS笔记4:CSS:列表、边框、表格、背景、鼠标与常用长度单位

完整教程:CSS笔记4:CSS:列表、边框、表格、背景、鼠标与常用长度单位2025-11-30 19:47 tlnshuju 阅读(0) 评论(0) 收藏 举报pre { white-space: pre !important; word-wrap: normal !important; overflow-x: au…

初三 whk 记

语文 数学 英语 化学 物理 历史 政治 体育 总分初三上学期半期考 \(\color{red}{109.5}\) 133 142.25 \(\color{red}{60}\) \(\color{red}{74}\) \(\color{red}{86}\) \(\color{red}{76}\) 无 680.752025.11.30 : 当务…

成膜助剂代理商有哪些?2025年成膜助剂OEM企业推荐:TOP10名单精选

在涂料与胶粘剂等产业领域,成膜助剂是不可或缺的核心原料,其质量优劣和供应稳定程度,对下游产品品质起着决定性作用。目前市场上,拥有出口资质的供应商、专注外贸的贸易公司、值得信赖的 OEM 代工企业以及正规代理…

软件基础第三次作业这个作业属于哪个课程

这个作业属于哪个课程 https://edu.cnblogs.com/campus/zjlg/25rjjc这个作业的目标 以小组为单位,完成一个“电梯演讲”作业。姓名=学号 董俊炜=2023329301094、毛佳睿=2023329301078视频地址

set操作

C++ set 容器基于红黑树实现,其核心操作的时间复杂度如下: ‌查找、插入、删除操作‌:平均和最坏情况均为 ‌O(log n)‌,其中 n 是集合中的元素数量。这种对数级性能得益于红黑树的自平衡特性。 ‌遍历操作‌:时间…

RISC-V Linux QEMU编译安装 qemu-system-riscv64 构建

RISC-V Linux QEMU编译安装 qemu-system-riscv64 构建 https://blog.csdn.net/flyfish1986/article/details/130004913 https://cloud.tencent.com/developer/article/1825739

2025 补水嫩肤 + 水润双效沐浴露排行榜 TOP10,梵玢成沐浴首选!

换季肌肤易干燥,想实现全身美白焕肤却顾虑重重:强力去角质怕伤屏障,温和款又担心角质代谢不畅,美白沐浴产品常伴随假滑,保湿型却难改善暗沉?关节黑、鸡皮顽固、干燥起皮、敏感泛红甚至皮肤松弛等问题,让 “丝滑…

云南旅游,旅行社怎么选?看这份五大品牌榜就够了,权威数据+正规资质+定制服务+旅客口碑推荐

云南以多元民族文化与瑰丽自然景观成为旅游热门地,但旅游市场中旅行社质量良莠不齐,隐性消费、行程缩水、服务断层等问题频发:低价团暗藏强制购物陷阱,承诺的非遗体验沦为走马观花,山区线路用车不合规存安全隐患。…

孩子近视了,OK镜怎么选?9款热门型号对比

OK镜(角膜塑形镜)作为一种有效的视力矫正方式,越来越受到家长和近视患者的关注。市面上品牌众多,如何选择一款适合的OK镜成为许多人的困惑。本文整理了9款热门OK镜的关键参数,从产地、中心厚度到设计类型,助你一…

python自动化测试:pytest(一).md

Python基础 测试常用库 好的!这些是 Python 自动化测试中最常用的文件操作库。我来为你详细讲解每个库的常用操作。一、JSON 文件操作 1. 读取 JSON 文件 import json# 方法1:读取文件 with open(data/users.json, r…

2025东华大学程序设计萌新挑战赛题解

目录Problem A. 数字变换Problem B. 月下梦城堡谜题Problem C. ACM自动机Problem D. 五彩斑斓的世界Problem E. 要开始了……吗?Problem F. 虚空输电Problem G. 结界的巫女-easyProblem H. 结界的巫女-hardProblem I.…

RustFS安全架构揭秘:其“内存安全”特性如何实现企业级数据可靠?

RustFS安全架构揭秘:其“内存安全”特性如何实现企业级数据可靠?2025年,当数据成为企业的核心资产,安全性成为存储系统选型的决定性因素。基于Rust语言构建的​RustFS​,凭借其编译期内存安全特性,实现了99.99% …

python自动化测试:pytest(二)

2. 参数化测试(数据驱动) Pytest 参数化与数据驱动测试详解 1. 基本参数化使用 @pytest.mark.parametrize 装饰器 import pytest# 基本参数化示例 @pytest.mark.parametrize("input, expected", [(1, 2),(…

2025年必备口语练习APP清单:AI助学、真人对练,总有一款适合你

想要提升英语口语,却苦于没有合适的练习对象和语言环境?这是许多英语学习者面临的共同难题。如今,借助科技手段,我们可以通过手机APP应用获得贴近真实的口语练习体验,让开口说英语不再是一件难事。 值得关注的口语…

详细介绍:2v1带您实战12nm高级数字后端

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …