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

leetcode 22.括号生成

思路:dfs回溯

其实这道题看起来很像栈,但考虑到多种可能方案输出,我们需要用dfs来做。

乍一看好像没啥思路。我们可以从括号的特点入手,括号我们知道都是成对存在的,那么无论多少对括号,其实第一个符号肯定是'(',而最后一个符号肯定是')'。剩下的,我们就可以认为是在这个大括号里面进行排序了。

排序的时候我们需要注意三个点,其实就是dfs剪枝需要注意的三个点:

第一,当‘(’的个数比‘)’的个数少的时候,证明我们没有正确的括号来匹配了,也就是无效,这时不能匹配括号;

第二,当‘(’的个数要大于所给n的时候,说明我们的括号符号超过了,不能匹配;

第三,当')'的个数要大于所给n的时候,同理,不能匹配。

这样,我们再进行选择符号。

dfs中需要这么几个参数,string字符串:记录可能结果,用来存入集合当中;num1,num2分别表示'('和')'的个数;n是所给的括号对数。

针对于大括号中的每一个位置,我们都需要抉择是选择‘(’还是')',不能不选。

这里首先就默认为字符串里面有第一个字符'('了。

最后在满足条件的情况下,再加入')',之后存入集合才是正确的。因为这里dfs中我的'('个数是1,而')'个数是0,而不是1(有些人会想着把num2设置成1,其实也可以,改变一下满足条件即可)。

class Solution {List<String>list=new ArrayList<>();public List<String> generateParenthesis(int n) {StringBuilder buf=new StringBuilder();buf.append("(");dfs(buf,n,1,0);return list;}public void dfs(StringBuilder buf,int n,int num1,int num2){if(num1>n)return;if(num2>n)return ;if(num1<num2)return;if(num1+num2==n*2-1){buf.append(")");list.add(buf.toString());buf.deleteCharAt(buf.length()-1);return ;}buf.append(")");dfs(buf,n,num1,num2+1);buf.deleteCharAt(buf.length()-1);buf.append("(");dfs(buf,n,num1+1,num2);buf.deleteCharAt(buf.length()-1);}
}

相关文章:

leetcode 22.括号生成

思路&#xff1a;dfs回溯 其实这道题看起来很像栈&#xff0c;但考虑到多种可能方案输出&#xff0c;我们需要用dfs来做。 乍一看好像没啥思路。我们可以从括号的特点入手&#xff0c;括号我们知道都是成对存在的&#xff0c;那么无论多少对括号&#xff0c;其实第一个符号肯…...

如何启动一个OpenSearch

创建两个集群&#xff0c;标注 不含备用节点 选择集群版本和配置集群版本 冷热存储和专用主节点这个按需开启 然后是网络&#xff0c;是否使用自定义域名&#xff0c;集群开在VPC还是公网上。 选择是否开启认证&#xff1a; 访问策略&#xff0c;其实就是资源策略 维护时段…...

自媒体工具箱 v1.0,支持涂抹加水印、无水印下载、加水印、消除原声、视频压缩

自媒体工具箱&#xff0c;打开App&#xff0c;非常干净清爽&#xff0c;只有视频工具板块&#xff0c;总共有11个功能&#xff0c;包括涂抹加水印、无水印下载、加水印、消除原声、视频压缩等功能。...

python 自学总结

# 这是一个代码的注释 注释可以使用# 一般而言#号后面要加空格表示规范&#xff0c;多行注释使用“”“ ”“”符合包裹 # type()这个是判断变量类型# 变量的形式 meny 50 # 自己定义叫标识符 不可以使用关键字 不可以用字母开头 规范性 下划线命名法 英文字母全部小写 …...

Java - WebSocket

一、WebSocket 1.1、WebSocket概念 WebSocket是一种协议&#xff0c;用于在Web应用程序和服务器之间建立实时、双向的通信连接。它通过一个单一的TCP连接提供了持久化连接&#xff0c;这使得Web应用程序可以更加实时地传递数据。WebSocket协议最初由W3C开发&#xff0c;并于2…...

【大模型】RMS Normalization原理及实现

1.RMS Normalization的原理 说RMS Normalization之前&#xff0c;先讲Layer Normalization 和 Batch Normalization。 BN和LN是两种常见的归一化方法。它们的目的是帮助模型训练更稳定、收敛更快。BN是在Batch维度上进行归一化&#xff0c;即对同一batch中每个特征维度的值进行…...

视觉检测系统实时识别工地安全帽佩戴情况

在建筑工地上&#xff0c;工人佩戴安全帽是确保施工安全的基本措施。然而&#xff0c;工人有时因疏忽或其他原因未能及时佩戴安全帽&#xff0c;这可能导致严重的安全隐患。传统的人工监督往往无法实现对工地的全覆盖或全天候监控&#xff0c;效率低下&#xff0c;容易出现漏检…...

【element-tiptap】报错Duplicate use of selection JSON ID cell at Selection.jsonID

我是下载了element-tiptap 给出的示例项目&#xff0c;在本地安装依赖、运行报错了&#xff0c; 报错截图&#xff1a; 在项目目录下找 node_modules/tiptap-extensions/node-modules&#xff0c;把最后的 node-modules 目录名字修改一下&#xff0c;例如修改为 node-modules–…...

STM32工程环境搭建(库函数开发)

目录 1、移植固件库&标准库 2、新建工程 以STM32f401作为例子进行环境搭建 1、移植固件库&标准库 ①桌面创建工程文件夹并且提取内核文件 用户文件&#xff1a;用户自己编写的程序文件 .c .h文件 .c文件&#xff1a;具体函数功能源代码 .h文件&#xff1a;宏定义…...

大数据新视界 --大数据大厂之大数据如何重塑金融风险管理:精准预测与防控

&#x1f496;&#x1f496;&#x1f496;亲爱的朋友们&#xff0c;热烈欢迎你们来到 青云交的博客&#xff01;能与你们在此邂逅&#xff0c;我满心欢喜&#xff0c;深感无比荣幸。在这个瞬息万变的时代&#xff0c;我们每个人都在苦苦追寻一处能让心灵安然栖息的港湾。而 我的…...

【C# 网络编程】基本概念

基本概念 OSI模型 背景&#xff1a; 为了统一和兼容不同计算机厂商的网络体系结构概念&#xff0c;国际标准化组织&#xff08;ISO&#xff09;在1979年提出了OSI参考模型&#xff08;Open System Interconnection&#xff0c;&#xff09; 结构 物理层&#xff08;Physica…...

系统架构设计师-下午案例题(2018年下半年)

1.某文化产业集团委托软件公司开发一套文化用品商城系统,业务涉及文化用品销售、定制、竞拍和点评等板块,以提升商城的信息化建设水平。该软件公司组织项目组完成了需求调研,现已进入到系统架构设计阶段。考虑到系统需求对架构设计决策的影响,项目组先列出了可能影响系统架…...

StarRocks报错:Getting analyzing error. Detail message: Unknown database ‘你的库名‘.

在starrocks上进行业务sql压力测试的时候&#xff0c;当并发提高到一定阈值就会报下面这个错误 背景描述&#xff1a;starrocks上有一张明细主表&#xff0c;维度表均是通过创建外部mysql catalog的方式使用的。 java.sql.SQLSyntaxErrorException: Getting analyzing error.…...

【原创教程】电气电工23:电气柜的品牌及常用型号

电气电工要清楚常用的电气柜品牌及型号,对于电器柜的选择,现在我们一般常用的品牌有3个。分别是好夫满、上海上海桐赛电气和南京巴哈曼电气,还有一种就是网上订制。 一、好夫满系列电气箱 好夫满有很多种类的机箱,EB精巧控制箱系列、KL接线箱系列、BKL不锈钢接线箱系列、…...

AI引起用人格局变动,个人如何应对这一趋势

大家好&#xff0c;我是Shelly&#xff0c;一个专注于输出AI工具和科技前沿内容的AI应用教练&#xff0c;体验过300款以上的AI应用工具。关注科技及大模型领域对社会的影响10年。关注我一起驾驭AI工具&#xff0c;拥抱AI时代的到来。 人工智能的发展带来的就业结构变革&#xf…...

小程序项目实践(一)--项目的初始化以及前期的准备工作

目录 1.起步 1.1 uni-app 简介 1.2 开发工具 1.2.1 下载 HBuilderX 1.2.2 安装 HBuilderX 1.2.3 安装 scss/sass 编译 1.2.4 快捷键方案切换 1.2.5 修改编辑器的基本设置 1.3 新建 uni-app 项目 1.4 目录结构 1.5 把项目运行到微信开发者工具 1.6 使用 Git 管理项目 …...

宝藏CSS样式网站,开发一些酷炫的特效

一、Uiverse 地址&#xff1a;Uiverse | The Largest Library of Open-Source UI elementshttps://uiverse.io/ 项目包含了我们常用到的一些组件&#xff0c;例如&#xff1a;按钮Button、多选框Checkbox、胶囊按钮Switch、加载特效Loading、输入框Input、表单Form、提示框To…...

vscode报错No module named ‘Crypto‘

背景 在Windows系统下&#xff0c;使用vscode的Run Code命令执行程序时&#xff0c;会报错 from Crypto.Cipher import AES ModuleNotFoundError: No module named Crypto有可能是因为当前操作系统存在两个版本的Python&#xff0c;而安装的Crypto仅对应于其中的一个Python版本…...

机器学习中的多模态学习:用C/C++实现高效模型

引言 多模态学习&#xff08;Multimodal Learning&#xff09;是一种机器学习技术&#xff0c;它旨在整合多种数据类型&#xff08;例如图像、文本、音频、传感器数据等&#xff09;来提升模型的预测精度和泛化能力。其应用领域包括情感分析、多模态推荐系统、智能驾驶、语音识…...

Java 运行机制及运行过程

Java的运行机制是基于Java虚拟机&#xff08;Java Virtual Machine&#xff0c;JVM&#xff09;的。Java程序在运行时&#xff0c;首先需要将源代码通过Java编译器编译为字节码文件&#xff08;.class文件&#xff09;&#xff0c;然后由JVM解释执行或通过即时编译器&#xff0…...

深入解析C/C++栈空间:Windows/Linux默认大小、设置方法与溢出防御实战

1. 栈空间&#xff1a;一个被忽视的“内存边界”写C/C代码&#xff0c;尤其是涉及到递归、大数组或者复杂函数调用时&#xff0c;你肯定遇到过“栈溢出”&#xff08;Stack Overflow&#xff09;这个老朋友。它不像内存泄漏那样悄无声息&#xff0c;而是直接给你一个程序崩溃&a…...

矩阵从0到自动化运转的4个阶段:90%的团队死在第2阶段

原创声明&#xff1a;✅ 本文为运营阶段理论分析与实战调研总结&#xff0c;涉及工具仅作阶段验证案例&#xff0c;不构成任何商业推荐。一、先说一个反直觉的事实我追踪了20个矩阵团队从0到稳定运营的全过程&#xff0c;发现一个规律&#xff1a;阶段存活率平均耗时最常见的死…...

为什么你的Midjourney出图总像快照?——深度拆解--camera、--lens、--lighting三大未公开参数的物理建模逻辑

更多请点击&#xff1a; https://kaifayun.com 第一章&#xff1a;为什么你的Midjourney出图总像快照&#xff1f;——核心问题诊断与视觉语义断层解析 Midjourney 生成图像常被诟病“缺乏绘画性”“构图平庸”“质感单薄”&#xff0c;其本质并非模型能力不足&#xff0c;而是…...

AES128加密实战:用C语言写一个加密函数,并集成到你的STM32项目里

AES128加密实战&#xff1a;用C语言写一个加密函数&#xff0c;并集成到你的STM32项目里 在物联网设备开发中&#xff0c;数据安全传输是至关重要的环节。想象一下&#xff0c;你的STM32设备需要通过无线网络发送传感器数据到云端&#xff0c;如果这些数据以明文传输&#xff0…...

北京UPS不间断电源经销商推荐名录

一、推荐公司概览中伟博信&#xff08;北京&#xff09;电子科技有限公司山特电子&#xff08;深圳&#xff09;有限公司北京办事处施耐德电气&#xff08;中国&#xff09;有限公司北京分公司科华数据股份有限公司北京分公司深圳科士达科技股份有限公司北京子公司二、北京地区…...

用STM32F103C8T6和HC-08蓝牙模块,从零到一打造你的第一辆遥控小车(CubeMX+HAL库保姆级教程)

从零构建STM32蓝牙遥控小车&#xff1a;CubeMX配置与实战全解析 第一次接触嵌入式开发时&#xff0c;那种让硬件按照自己编写的代码动起来的成就感&#xff0c;至今记忆犹新。本文将带你完整经历用STM32F103C8T6和HC-08蓝牙模块打造遥控小车的全过程&#xff0c;特别适合刚学完…...

手把手教你用FPGA+摄像头搭建一个图像处理系统(从采集到以太网传输)

从零构建FPGA图像处理系统&#xff1a;硬件选型到以太网传输实战指南 在嵌入式视觉领域&#xff0c;FPGA因其并行处理能力和低延迟特性&#xff0c;成为实时图像处理的理想平台。本文将带您完整实现一个基于OV7670摄像头和Xilinx Artix-7 FPGA的图像采集处理系统&#xff0c;涵…...

终极指南:如何快速搭建基于AI的微信智能机器人

终极指南&#xff1a;如何快速搭建基于AI的微信智能机器人 【免费下载链接】wechat-bot &#x1f916;一个基于 WeChaty 结合 ChatGPT / Claude / Kimi / DeepSeek / Ollama等Ai服务实现的微信机器人 &#xff0c;可以用来帮助你自动回复微信消息&#xff0c;或者社群分析/好友…...

立创EDA专业版保姆级避坑指南:从原理图到PCB的53个新手常见操作误区

立创EDA专业版53个致命操作误区全解析&#xff1a;从原理图到PCB的避坑实战手册 第一次打开立创EDA专业版时&#xff0c;那种面对空白画布的茫然感我至今记忆犹新。作为一个从零开始学习电子设计的爱好者&#xff0c;我踩过的坑可能比画过的电路板还多——从原理图上莫名其妙的…...

GNSS PPP宽窄巷模糊度固定算法全链路拆解

1. GNSS PPP宽窄巷模糊度固定算法概述 全球导航卫星系统&#xff08;GNSS&#xff09;精密单点定位&#xff08;PPP&#xff09;技术中&#xff0c;模糊度固定是提升定位精度的关键环节。我第一次接触这个领域时&#xff0c;被各种专业术语绕得头晕&#xff0c;直到把整个流程…...