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

力扣热题100Day06:20. 有效的括号,21. 合并两个有序链表,22. 括号生成

20. 有效的括号

题目链接:20. 有效的括号 - 力扣(Leetcode)

思路:使用栈

(1)遇到左括号就将其对应的右括号压入到栈中

(2)如果遇到右括号

        a. 如果弹出的元素与当前不等,false

        b. 如果相等就弹出

(3)遍历s结束后,若栈还是不为空,说明有多余的右括号,返回false

Java代码:

class Solution {public boolean isValid(String s) {Stack<Character> st = new Stack<>();for(int i = 0; i < s.length();i++){char ch = s.charAt(i);//遇到左括号就压入对应的右括号if(ch == '('){st.push(')');}else if(ch == '{'){st.push('}');}else if(ch == '['){st.push(']');}else if(st.isEmpty() || ch != st.peek()){return false;}else{st.pop();}}//遍历结束后,如果st不为空,说明有多余的右括号return st.isEmpty();}
}

21. 合并两个有序链表

题目链接:21. 合并两个有序链表 - 力扣(Leetcode)

看完别人文章后的思路(该文章链接里的热评有对于递归的理解,一定要看!!!): 文章链接 21. 合并两个有序链表 - 力扣(Leetcode)

        递归三部曲

        (1)确定函数返回值及参数

        (2)确定终止条件

                如果两个链表有一个为空,说明可以终止

        (3)确定单层递归逻辑

Java代码:

/*** Definition for singly-linked list.* public class ListNode {*     int val;*     ListNode next;*     ListNode() {}*     ListNode(int val) { this.val = val; }*     ListNode(int val, ListNode next) { this.val = val; this.next = next; }* }*/
class Solution {public ListNode mergeTwoLists(ListNode list1, ListNode list2) {if(list1 == null){return list2;}else if(list2 == null){return list1;}else if(list1.val < list2.val){//list1的值小,所以考虑list1节点的链接//下一个节点要看下一层递归了,就看list1.next(因为list1已经在该层递归选了) 和 list2list1.next = mergeTwoLists(list1.next,list2);//告诉上一次递归,我返回了个节点给你,你链接这个节点return list1;}else{list2.next = mergeTwoLists(list1,list2.next);return list2;}}
}

22. 括号生成

题目链接:21. 合并两个有序链表 - 力扣(Leetcode)

思路:组合问题,且题目中提到说是要是有效的括号组合,考虑使用回溯算法,回溯三部曲

(1)确定回溯函数返回值和参数

        返回值:void

        参数:String str,int left(剩余左括号的个数),int right(剩余右括号的个数)

(2)确定终止条件

        如果left == 0 && right == 0,收获str

(3)确定单层递归逻辑

看完官方题解的反思:

(1)自己不知道如何确定有效的括号组合:左括号必须用相同类型的右括号闭合,左括号必须以正确的顺序闭合

(2)剩余左括号总数要小于等于右括号

Java代码:

class Solution {List<String> res = new ArrayList<>();public List<String> generateParenthesis(int n) {if(n <= 0){return res;}getParenthesis("",n,n);return res;}private void getParenthesis(String str,int left, int right) {if(left == 0 && right == 0 ){res.add(str);return;}if(left == right){//剩余左右括号数相等,下一个只能用左括号getParenthesis(str+"(",left-1,right);}else if(left < right){//剩余左括号小于右括号,下一个可以用左括号也可以用右括号if(left > 0){getParenthesis(str+"(",left-1,right);}getParenthesis(str+")",left,right-1);}}}

相关文章:

力扣热题100Day06:20. 有效的括号,21. 合并两个有序链表,22. 括号生成

20. 有效的括号 题目链接&#xff1a;20. 有效的括号 - 力扣&#xff08;Leetcode&#xff09; 思路&#xff1a;使用栈 &#xff08;1&#xff09;遇到左括号就将其对应的右括号压入到栈中 &#xff08;2&#xff09;如果遇到右括号 a. 如果弹出的元素与当前不等&#xff…...

【Yolov5】保姆级别源码讲解之-推理部分detect.py文件

推理部分之detect.py文件讲解1.下载Yolov5的源码2. 主函数讲解3.文件标头的注释4. main函数的5. run函数5.1 第一块参数部分5.2第二块&#xff0c;传入数据预处理5.3 第三块创建文件夹5.4 第四块 加载模型的权重5.5 第五块 Dataloader 加载模块5.6 第六块 推理部分 Run inferen…...

无重叠区间-力扣435-java贪心策略

一、题目描述给定一个区间的集合 intervals &#xff0c;其中 intervals[i] [starti, endi] 。返回 需要移除区间的最小数量&#xff0c;使剩余区间互不重叠 。示例 1:输入: intervals [[1,2],[2,3],[3,4],[1,3]]输出: 1解释: 移除 [1,3] 后&#xff0c;剩下的区间没有重叠。…...

Python使用VTK对容积超声图像进行体绘制(三维重建)

目录VTK简介什么是体绘制&#xff1f;体绘制效果图流程CodeQ&AReferenceVTK简介 VTK&#xff08;Visualization Toolkit&#xff09;是一个用于3D计算机图形学、图像处理和可视化的开源软件包。它包括一组C类和工具&#xff0c;可以让用户创建和处理复杂的3D图形和数据可视…...

JAVA设计模式之工厂模式讲解

目录 前言 开始表演 前言 Java中使用工厂模式的主要原因是为了实现代码的灵活性和可维护性。工厂模式是一种创建型设计模式&#xff0c;它提供了一种将对象的创建和使用进行分离的方式。具体来说&#xff0c;工厂模式可以将对象的创建过程封装在一个独立的工厂类中&#xff…...

近万字概述L3及以上自动驾驶故障运行和故障安全机制

本文描述了对ADS的FO和FS机制的评估方法。当系统不能按预期运行时,ADS将使用FO和FS机制。这些机制使ADS能够在最大程度上达到使车辆及其乘员脱离危险的MRC。定义、测试和验证实现MRC的FO和FS策略是确保ADS安全运行和部署的重要步骤。 MRC在SAE J3016中被定义为: 用户或ADS在…...

kafka入门到精通

文章目录一、kafka概述&#xff1f;1.定义1.2消息队列1.2.1 传统消息队列的使用场景1.2.2 消息队列好处1.2.3 消息队列两种模式1.3 kafka基础架构二、kafka快速入门1.1使用docker-compose安装kafka1.2测试访问kafka-manager1.3 查看kafka版本号1.4 查看zookeeper版本号1.5 扩展…...

es-09模糊查询

模糊查询 前缀搜索&#xff1a;prefix 概念&#xff1a;以xx开头的搜索&#xff0c;不计算相关度评分。 注意&#xff1a; 前缀搜索匹配的是term&#xff0c;而不是field。前缀搜索的性能很差前缀搜索没有缓存前缀搜索尽可能把前缀长度设置的更长 语法&#xff1a; GET <ind…...

57 - 深入解析任务调度

---- 整理自狄泰软件唐佐林老师课程 文章目录1. 问题1.1 思考1.2 实例分析&#xff1a;问题分析及解决2. 深入讨论2.1 任务调度的定义2.2 关于调度算法的分类2.3 什么时候进行任务调度2.4 任务的分类2.5 关于优先级调度2.6 问题2.7 调度算法的终极目标2.8 课后扩展1. 问题 系统…...

CAN总线开发一本全(3) - 微控制器集成的FlexCAN外设

CAN总线开发一本全&#xff08;3&#xff09; - 微控制器集成的FlexCAN外设 苏勇&#xff0c;2023年2月 文章目录CAN总线开发一本全&#xff08;3&#xff09; - 微控制器集成的FlexCAN外设引言硬件外设模块系统概要总线接口单元 - 寄存器清单数据结构 - 消息缓冲区MB初始化过…...

Elasticsearch7.8.0版本进阶——段合并

目录一、段的概述1.1、段的概念1.2、段的缺点1.3、如何解决段数量暴增问题二、段合并的流程三、段合并的注意事项一、段的概述 1.1、段的概念 每一 段 本身都是一个倒排索引。 1.2、段的缺点 由于自动刷新流程每秒会创建一个新的段 &#xff0c;这样会导致短时间内的段数量…...

Java版贪食蛇游戏

技术&#xff1a;Java等摘要&#xff1a;近年来Java作为一种新的编程语言&#xff0c;以其简单性、可移植性和平台无关性等优点&#xff0c;得到了广泛地应用&#xff0c;特别是Java与万维网的完美结合&#xff0c;使其成为网络编程和嵌入式编程领域的首选编程语言。MyEclipse是…...

2023年度数学建模竞赛汇总

本人7年数学建模竞赛经验&#xff0c;历史获奖率百分之百。团队成员都是拿过全国一等奖的硕博&#xff0c;有需要数模竞赛帮助的可以私信我。 下面主要列几年一些比较有含金量的数学建模竞赛&#xff08;按比赛时间顺序&#xff09; 1. 美国大学生数学建模竞赛 报名时间&…...

了解Python语言和版本

1.1 任务1了解Python语言和版本 Python 语言的名字来自于一个著名的电视剧"Monty Pythons Flying Cireus",Python之父 Guido van Rossum是这部电视剧的狂热爱好者&#xff0c;所以把他设计的语言命名为Python。 Python 是一门跨平台、开源、免费的解释型高级动态编…...

nvm (node版本管理工具)安装的详细步骤,并解决安装过程中遇到的问题

1、下载NVM&#xff0c;跳转下载链接后&#xff0c;如下图&#xff0c;下载红框后解压文件 2、安装 注意&#xff1a;双击安装之后&#xff0c;会有两个地址选择&#xff0c; 1、地址中不能存在空格 2、不要放在C盘中&#xff0c;后面需要改个设置文件&#xff0c;安装到C盘的…...

朴素贝叶斯笔记

贝叶斯公式在A 条件成立下&#xff0c;B的概率等于B的概率*在B条件成立下&#xff0c;A的概率/A的概率&#xff0c;推导假设一个学校中男生占总数的60%&#xff0c;女生占总数的40%。并且男生总是穿长裤&#xff0c;女生则一半穿长裤、一半穿裙子。1.正向概率。随机选取一个学生…...

【GUI】用于电动助力车性能分析的GUI(Matlab代码实现)

&#x1f468;‍&#x1f393;个人主页&#xff1a;研学社的博客&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5;&#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密…...

Android:反编译apk踩坑/apktool/dex2jar/JDGUI

需求描述 想要反编译apk文件&#xff0c;搜到了这篇博客&#xff1a;Android APK反编译就这么简单 详解&#xff08;附图&#xff09;&#xff0c;非常有参考价值~但其中的工具下载链接都已404&#xff0c;而本杂鱼实际操作的过程中也出现了亿点点点点点点的问题&#xff0c;于…...

React 跨域的配置

1、为什么会出现跨域&#xff1f; 浏览器遵循同源政策&#xff08;同源策略三要素&#xff1a;协议相同、域名相同、端口相同&#xff09; 2、配置跨域代理 使用中间件 http-proxy-middleware&#xff08;安装依赖&#xff09; npm install http-proxy-middleware 创建setupP…...

Elasticsearch7.8.0版本进阶——持久化变更

目录一、持久化变更的概述二、事务日志&#xff08;translog&#xff09;三、持久化变更完整流程四、事务日志&#xff08;translog&#xff09;的作用五、事务日志&#xff08;translog&#xff09;的目的一、持久化变更的概述 没有用 fsync 把数据从文件系统缓存刷&#xff…...

2026这6款宝藏降AIGC软件大起底,一键把AIGC率降至安全线!

步入 2026 年&#xff0c;学术圈的风向早已不是过去那个只看查重率的时代了。如今&#xff0c;AI 检测系统像长了眼睛一样&#xff0c;精准捕捉每一段文字中的 AI 痕迹。高校的审核标准也愈发严苛&#xff0c;论文不仅要“看起来像人写的”&#xff0c;更要“读起来像人写的”。…...

STM32G474RB用CMSIS-DAP下载程序,遇到一堆content mismatch错误?别急着换芯片,先检查这个硬件细节

STM32G474RB用CMSIS-DAP下载程序遇到content mismatch&#xff1f;可能是多设备干扰惹的祸 当你在实验室同时调试多块STM32开发板时&#xff0c;是否遇到过这样的场景&#xff1a;昨天还能正常烧录的STM32G474RB板卡&#xff0c;今天突然开始报出一连串content mismatch错误&am…...

终极指南:如何在ComfyUI中实现AI动作迁移与姿态控制

终极指南&#xff1a;如何在ComfyUI中实现AI动作迁移与姿态控制 【免费下载链接】ComfyUI-MimicMotionWrapper 项目地址: https://gitcode.com/gh_mirrors/co/ComfyUI-MimicMotionWrapper ComfyUI-MimicMotionWrapper是一个基于腾讯MimicMotion技术的ComfyUI插件&#…...

实战案例|向导布局一出手,企业流程表单直接专业满级

实战案例&#xff5c;向导布局一出手&#xff0c;企业流程表单直接专业满级 在企业系统里&#xff0c;有一类表单天生就必须按步骤走&#xff1a;用户注册、企业认证、项目申报、入职办理、采购申请、合同签署…这类表单一旦用 Tab 或折叠面板&#xff0c;就会显得不规范、不正…...

Java编程入门科普:从“一杯咖啡”到亿万应用

在数字化时代&#xff0c;我们每天都在与Java打交道&#xff1a;刷手机时的Android APP、逛电商时的后台系统、银行转账的安全校验、甚至智能家居的控制程序&#xff0c;背后都有Java的身影。作为一门诞生近30年仍稳居热门的编程语言&#xff0c;它不仅是程序员的“入门优选”&…...

VHS Pro深度解析:Unity中模拟录像带失真的物理建模与工业应用

1. 为什么今天还有人执着于“坏掉的画质”&#xff1f;——VHS Pro 不是怀旧装饰&#xff0c;而是视觉叙事新工具你有没有在剪辑软件里拖动一个“胶片颗粒”滑块&#xff0c;看着画面突然蒙上一层灰蒙蒙的噪点&#xff0c;然后心里咯噔一下&#xff1a;这玩意儿真能用&#xff…...

如何用Python快速接入Taotoken并调用多模型API完成数据清洗任务

&#x1f680; 告别海外账号与网络限制&#xff01;稳定直连全球优质大模型&#xff0c;限时半价接入中。 &#x1f449; 点击领取海量免费额度 如何用Python快速接入Taotoken并调用多模型API完成数据清洗任务 对于需要处理客户数据的开发者而言&#xff0c;数据清洗与结构化是…...

Akebi-GC 实战指南:掌握游戏功能修改与自动化测试技术

Akebi-GC 实战指南&#xff1a;掌握游戏功能修改与自动化测试技术 【免费下载链接】Akebi-GC (Fork) The great software for some game that exploiting anime girls (and boys). 项目地址: https://gitcode.com/gh_mirrors/ak/Akebi-GC 作为一款专注于游戏功能修改与自…...

QKeyMapper:免费开源的Windows按键映射工具,彻底解放你的操作习惯

QKeyMapper&#xff1a;免费开源的Windows按键映射工具&#xff0c;彻底解放你的操作习惯 【免费下载链接】QKeyMapper [按键映射工具] QKeyMapper&#xff0c;Qt开发Win10&Win11可用&#xff0c;不修改注册表、不需重新启动系统&#xff0c;可立即生效和停止。支持游戏手柄…...

Nodejs后端服务集成Taotoken实现智能客服对话

&#x1f680; 告别海外账号与网络限制&#xff01;稳定直连全球优质大模型&#xff0c;限时半价接入中。 &#x1f449; 点击领取海量免费额度 Node.js 后端服务集成 Taotoken 实现智能客服对话 为客服系统引入智能对话能力&#xff0c;是提升服务效率与用户体验的有效路径。…...