java数据结构与算法刷题-----LeetCode20:有效的括号

有效的括号(Java实现) 在leetcode上刷了一道简单的有效的括号题,回想起来了大二学的数据结构,当时用的是C语言,感觉用Java解答更好一些,不过最重要的还是算法思想hhh~~ 题目: 给定一个只包括 ‘(’,’)’,’{’,’}’,’[’,’]’ 的字符串,判断字符串是否有效。 有效字符串需满足: 左括号必须用相同类型的右括号闭合。 左括号必须以正确的顺序闭合。 注意空字符串可被认为是有效字符串。示例 1: 输... 阅读详情
java数据结构与算法刷题目录(剑指Offer、LeetCode、ACM)-----主目录-----持续更新(进不去说明我没写完):https://blog.youkuaiyun.com/grd_java/article/details/123063846

在这里插入图片描述

  1. 思路分析
  1. 括号是成对出现的
  2. 只需要遇到左括号入栈,然后遇到右括号出栈即可
  3. 只要括号不匹配,就返回false
  1. 代码
    在这里插入图片描述
class Solution {
    //遇到左括号就入栈,遇到右括号就出栈,不匹配就false,如果遍历完成,栈中还有剩余括号,也返回false
    public boolean isValid(String s) {
        Stack<Character> stack = new Stack<>();
        //括号可以用map保存,无法起到空间换时间的作用,能让代码更简单,这里不使用map
//        Map<Character, Character> pairs = new HashMap<Character, Character>() {{
//            put(')', '(');
//            put(']', '[');
//            put('}', '{');
//        }};
        for (char c : s.toCharArray()) {
            if(c=='('||c=='['||c=='{') stack.push(c);
            else if(stack.size()>0){
                Character pop = stack.pop();
                if (c==')'&&pop!='(') return false;
                if(c==']'&&pop!='[') return false;
                if(c=='}'&&pop!='{') return false;
            }else return false;
        }
        return stack.size()==0?true:false;
    }
}

刷题一定要坚持,总结套路,不单单要把题做出来,要举一反三,也要参考别人的思路,学习别人解题的优点,找出你觉得可以优化的点。

  1. 单链表解题思路:双指针、快慢指针、反转链表、预先指针
  1. 双指针:对于单链表而言,可以方便的让我们遍历结点,并做一些额外的事
  2. 快慢指针:常用于找链表中点,找循环链表的循环点,一般快指针每次移动两个结点,慢指针每次移动一个结点。
  3. 反转链表:通常有些题,将链表反转后会更好做,一般选用三指针迭代法,递归的空间复杂度有点高
  4. 预先指针:常用于找结点,比如找倒数第3个结点,那么定义两个指针,第一个指针先移动3个结点,然后两个指针一起遍历,当第一个指针遍历完成,第二个指针指向的结点就是要找的结点
  1. 数组解题思路:双指针、三指针,下标标记
  1. 双指针:多用于减少时间复杂度,快速遍历数组
  2. 三指针:多用于二分查找,分为中间指针,左和右指针
  3. 下标标记:常用于在数组范围内找东西,而不想使用额外的空间的情况,比如找数组长度为n,元素取值范围为[1,n]的数组中没有出现的数字,遍历每个元素,然后将对应下标位置的元素变为负数或者超出[1,n]范围的正数,最后没有发生变化的元素,就是缺少的值。
  4. 差分数组:对差分数组求前缀和即可得到原数组
  1. 用差值,作为下标,节省空间找东西。比如1900年到2000年,就可以定义100大小的数组,每个数组元素下标的查找为1900。
  2. 前缀和数组,对于数组 [1,2,2,4],其差分数组为 [1,1,0,2],差分数组的第 ii个数即为原数组的第 i-1 个元素和第 i个元素的差值,也就是说我们对差分数组求前缀和即可得到原数组
  1. 前缀和:假设有一个数组arr[1,2,3,4]。然后创建一个前缀和数组sum,记录从开头到每个元素区间的和。第一个元素是0。第二个元素,保存第一个和sum[1] = sum[0]+arr[0],第二个元素,保存第二个和sum[2] = sum[1]+arr[1]
  1. 栈解题思路:倒着入栈,双栈
  1. 倒着入栈:适用于出栈时想让输出是正序的情况。比如字符串’abc’,如果倒着入栈,那么栈中元素是(c,b,a)。栈是先进后出,此时出栈,结果为abc。
  2. 双栈:适用于实现队列的先入先出效果。一个栈负责输入,另一个栈负责输出。
LeetCode刷题经验分享:数据结构与算法核心 本文旨在为LeetCode刷题者提供系统化的知识框架与实战经验,覆盖数据结构(数组、链表、树、图等)和算法(排序、搜索、动态规划、贪心等)的核心内容。通过深度解析典型题目,阐述如何将理论知识转化为解题策略,重点提升代码实现能力与算法优化思维。本文采用“概念解析→算法原理→实战应用→工具资源”的逻辑结构,通过理论结合代码的方式,逐步拆解LeetCode高频题型的解题思路。核心章节包括数据结构底层原理、算法复杂度分析、典型题目代码实现、实战项目案例等,帮助读者建立从问题建模到代码优化的完整思维链路。数据结构。 阅读详情

相关推荐

LeetCode 第20题:有效的括号题解

题目要求:给定一个只包含字符’(‘、’)‘、’{‘、’}‘、’[‘和’]'的字符串,判断字符串是否有效。左括号必须用相同类型的右括号闭合。左括号必须以正确的顺序闭合。"()"true"()[]{}"true"(]"false"([)]"false"{[]}"true在这篇博客中,我们详细讲解了如何使用栈来解决LeetCode第20题:有效的括号。通过使用栈这种数据结构,我们成功地在时间复杂度为O(n)的情况下判断了字符串中的括号是否有效。此外,我们还简要介绍了其他一些不太适用的方法。栈。

Gemini的博客 287

【LeetCode 热题 100】20. 有效的括号

Problem:给定一个只包括 ‘(’,‘)’,‘{’,‘}’,‘[’,‘]’ 的字符串 s ,判断字符串是否有效。有效字符串需满足:左括号必须用相同类型的右括号闭合。左括号必须以正确的顺序闭合。每个右括号都有一个对应的相同类型的左括号。

最短的捷径就是绕远路,绕远路才是我的最短捷径。 1688

【简单】力扣算法题解析LeetCode20:有效的括号

本文介绍了如何判断一个仅包含括号字符的字符串是否有效。通过使用栈数据结构,可以高效检查括号的匹配情况。算法首先预处理奇数长度字符串,随后遍历字符:左括号压栈,右括号检查栈顶匹配性。最终栈空则返回true。Java实现利用数组模拟栈,优化了性能,确保时间复杂度为O(n)。该方法简洁高效,适用于常见括号匹配问题。

ylumwd的博客 372

Java实现 LeetCode 20 有效的括号

20. 有效的括号 给定一个只包括 ‘(’,’)’,’{’,’}’,’[’,’]’ 的字符串,判断字符串是否有效。 有效字符串需满足: 左括号必须用相同类型的右括号闭合。 左括号必须以正确的顺序闭合。 注意空字符串可被认为是有效字符串。 示例 1: 输入: “()” 输出: true 示例 2: 输入: “()[]{}” 输出: true 示例 3: 输入: “(]” 输出: false 示例 4...

南 墙 1万+

ESP32S3与ILI9341 LCD屏LVGL移植实战:从零构建嵌入式GUI界面

本文详细介绍了如何在ESP32S3平台上移植LVGL图形库并驱动ILI9341 LCD屏幕,从硬件选型、开发环境配置到显示驱动实现和内存优化。通过实战案例讲解移植过程中的关键步骤和常见问题解决方案,帮助开发者快速构建嵌入式GUI界面。

h9j8k7l6m5n的博客 1098

别再手动填序号了!用Python脚本在Arcgis属性表里实现分组自动编号(附完整代码)

本文详细介绍了如何利用Python脚本在Arcgis属性表中实现分组自动编号,告别低效的手工操作。通过核心代码解析和实战教程,帮助GIS工程师快速掌握自动化编号技术,提升工作效率并降低错误率。特别适合城市规划、国土调查等需要处理大量分组数据的场景。

weixin_42532473的博客 309

LeetCode 20 - 有效的括号

本文介绍了LeetCode第20题"有效的括号"的解题方法。题目要求判断给定字符串中的括号是否正确配对和闭合。文章详细分析了使用栈数据结构解决该问题的思路:遇到左括号压栈,遇到右括号检查栈顶是否匹配并弹栈。提供了Python、Java和Rust三种语言的实现代码,并总结了栈操作、边界条件处理等关键知识点。同时指出了空栈检查和最终栈状态等易错点,并讨论了优化思路。该问题展现了栈在处理嵌套结构问题中的典型应用。

weixin_45980775的博客 1401

【有啥问啥】智能座舱CPD技术:毫米波雷达如何守护儿童安全?

本文深入探讨了智能座舱中CPD(Child Presence Detection)技术如何通过毫米波雷达保障儿童安全。毫米波雷达凭借其穿透性检测、微动感知等优势,成为儿童遗留车内的有效解决方案。文章详细解析了技术原理、系统集成方案及安装指南,为智能座舱安全技术提供了实用参考。

weixin_29193259的博客 359

【力扣Leetcode题解系列之0020—有效的括号】

本文介绍了判断括号有效性的经典栈解法,通过Python、Java、C、C++和Go五种编程语言实现。核心思路是利用栈结构匹配括号对,时间复杂度O(n),空间复杂度O(n)。关键点包括正确使用栈操作、处理边界条件和字符匹配逻辑。文章还分析了实现难点,并提出了支持更多括号类型的扩展题目,为理解括号匹配问题提供了多语言实现方案和算法分析。

youngerwang的博客 1166

智能座舱测试工程师必看:从零搭建自动化测试框架的5个实战技巧

本文为智能座舱测试工程师提供从零搭建自动化测试框架的5个实战技巧,涵盖环境搭建、ADB高级应用、Python脚本工程化、Monkey测试优化及性能调优。通过ADB深度操作和Python脚本封装,帮助测试人员构建高可复用的智能座舱测试解决方案,显著提升测试效率与问题发现率。

python9snake的博客 637

insightface scrfd人脸检测测试

pip install mmdet 自动安装mmcv win10上可以,服务器上没成功

jacke121的专栏 4023

LeetCode刷题系列——最长有效括号

前言 最近被新型冠状病毒搞得人心惶惶,大家都不太敢出门,我也不敢出门(哈哈哈),索性就在家里刷了一道leetcode的简单题——有效的括号(leetcode20题),说简单也不简单,说难也不难,刷完之后觉得意犹未尽。然后再刷了一道leetcode的困难题——最长有效括号(leetcode32题)。今天就来讲一下这两道相似题目的题解。 第一题(leetcode20_有效的括号) 思路 先列出...

god-jiang的博客 455

OpenClaw更新后变傻了?一分钟教你快速恢复(OpenClaw更新版本后降智、缺少权限问题的解决方案)

OpenClaw 版本更新后出现降智问题,AI不再执行具体任务。本文详细分析问题原因,提供最简便的解决方案✅

XiaoqiangClub的博客 3887

力扣刷题路线

结合高频题、经典题和算法思想学习建议,分阶段从基础到进阶编排,覆盖所有核心标签,并标注题号与学习方法。:画图模拟快慢指针移动,如移动零时快指针探路、慢指针标记非零位置。:括号生成时,左括号数不能超过n,右括号数不能超过左括号数。:LCA问题中,若左右子树均含目标节点,则当前节点为祖先。:终止条件、递归调用、返回值,如二叉树深度递归返回。:掌握虚拟头节点、递归反转、环形检测。:掌握索引操作、快慢指针、滑动窗口。:熟悉括号匹配、单调栈、层序遍历。:熟悉反转、哈希统计、回文处理。

FAQEW的博客 1819

Lion优化器试验笔记

Lion优化器试验笔记

jacke121的专栏 849

166、Sim2Real中的强化学习:域随机化与鲁棒策略

第二,训练时监控每个随机化维度对策略梯度的贡献,如果某个维度对loss的方差贡献极小,说明策略已经忽略它了,要么加大范围,要么删掉。第四,如果条件允许,用真实数据来校准随机化分布——采集真机上的传感器数据,拟合出参数分布,再把这个分布作为随机化的采样依据,这比拍脑袋定范围靠谱得多。动态随机化是很多人忽略的维度。域随机化的核心思想说白了就一句话:别去精确建模现实,而是把仿真环境本身变成一个随机分布的集合,让策略在“各种乱七八糟的物理参数”里都见过世面,这样到了真机上,不管现实落在哪个参数区间,策略都能兜住。

sundong_81的博客 28

LeetCode第20题 有效的括号(Valid Parentheses)

文章目录题目地址题目描述代码实现 题目地址 题目地址https://leetcode-cn.com/problems/valid-parentheses/ 题目描述 给定一个只包括 ‘(’,’)’,’{’,’}’,’[’,’]’ 的字符串,判断字符串是否有效。 有效字符串需满足: 左括号必须用相同类型的右括号闭合。 左括号必须以正确的顺序闭合。 注意空字符串可被认为是有效字符串。 示例 1: ...

ThinkWon的博客 5956

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

LeetCode第20题——有效的括号

LeetCode第20题——有效的括号详解

GeGe&YoYo的博客 820

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

力扣20. 有效的括号

力扣第20题 给定一个只包括 ‘(’,’)’,’{’,’}’,’[’,’]’ 的字符串,判断字符串是否有效。 有效字符串需满足: 左括号必须用相同类型的右括号闭合。 左括号必须以正确的顺序闭合。 注意空字符串可被认为是有效字符串。 示例 1: 输入: “()” 输出: true 示例 2: 输入: “()[]{}” 输出: true 示例 3: 输入: “(]” 输出: false ...

sinat_27523689的博客 357

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

Leetcode-20有效的括号(java实现)

Leetcode-20有效的括号(java实现) 题目: 给定一个只包括 '(',')','{','}','[',']' 的字符串,判断字符串是否有效。 有效字符串需满足: 1. 左括号必须用相同类型的右括号闭合。 2. 左括号必须以正确的顺序闭合。 注意空字符串可被认为是有效字符串。 示例 1: 输入: "()" 输出: true 示例 2: 输入: "()[]{}" 输出: true 示例 3: 输入: "(]" 输出: false 分析: 括号是有key-value 关系的 括号的关闭顺序是

三少说 422

LeetCode 20.有效的括号 Java

引用 主要数据结构 思路 代码 出现的Bug

Undifferentiated Life 248

Leetcode 算法第20题 有效的括号

题目地址:https://leetcode-cn.com/problems/valid-parentheses/ 给定一个只包括 '(',')','{','}','[',']'的字符串,判断字符串是否有效。 有效字符串需满足: 左括号必须用相同类型的右括号闭合。 左括号必须以正确的顺序闭合。 注意空字符串可被认为是有效字符串。 示例 1: 输入: "()" 输出: true 示例2...

hlvy 428

【LeetCode】—— 有效括号LeetCode20题

题目描述 给定一个只包括 ‘(’,’)’,’{’,’}’,’[’,’]’ 的字符串,判断字符串是否有效。 有效字符串需满足: 左括号必须用相同类型的右括号闭合。 左括号必须以正确的顺序闭合。 注意空字符串可被认为是有效字符串。 示例 1: 输入: "()" 输出: true 示例 2: 输入: "()[]{}" 输出: true 示例 3: 输入: "(]" 输出: false 示例 4: ...

chenxiyuehh的博客 243

栈结构实战:力扣20题有效括号的算法解析

栈是计算机科学中基础且重要的线性数据结构,遵循后进先出(LIFO)原则。其核心操作push和pop的时间复杂度均为O(1),在表达式求值、函数调用等场景有广泛应用。通过力扣热题20'有效的括号'可以深入理解栈的工程实践价值:利用栈的LIFO特性,配合哈希表建立括号映射关系,能高效解决括号匹配问题。该算法的时间复杂度优化至O(n),是面试中考察数据结构应用的典型例题,也常见于IDE语法检查、JSON解析等实际开发场景。掌握这类栈结构应用对提升算法能力和工程实践水平都很有帮助。

weixin_30363509的博客 424

leetcode算法20.有效的括号

???????????? 哈喽!大家好,我是【学无止境小奇】,一位热爱分享各种技术的博主!???????????? ⭐【学无止境小奇】的创作宗旨:每一条命令都亲自执行过,每一行代码都实际运行过,每一种方法都真实实践过,每一篇文章都良心制作过。✊✊✊ ⭐【学无止境小奇】的博客中所有涉及命令、代码的地方,除了提供图片供大家参考,另外会在图片下方提供一份纯文本格式的命令或者代码方便大家粘贴复制直接执行命令或者运行代码。???????????? ⭐如果你对技术有着浓厚的兴趣,欢迎关注【学无止境小奇】,欢迎大

真正的大师永远怀着一颗学徒的心 1432
上一篇: java数据结构与算法刷题-----LeetCode14:最长公共前缀
下一篇: java数据结构与算法刷题-----LeetCode26:删除有序数组中的重复项
ydenergy_殷志鹏
博客等级 码龄7年 5887粉丝 543原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ydenergy_殷志鹏

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值