【刷题记录】22. 括号生成

简介: 【刷题记录】22. 括号生成

一、题目描述


来源:力扣(LeetCode)
数字 n 代表生成括号的对数,请你设计一个函数,用于能够生成所有可能的并且 有效的 括号组合。




示例 1:


输入:n = 3

输出:["((()))","(()())","(())()","()(())","()()()"]


示例 2:


输入:n = 1

输出:["()"]


提示:


  • 1 <= n <= 8


二丶思路分析


回溯法


对于n对括号 ,会有 n(n) 一共 2n 个字符


我们使用DFS来递归生产所有的序列情况,
为了减少递归的次数,每次递归时候


  • 左括号数量不大于 n,我们可以放一个左括号。
  • 如果右括号数量小于左括号的数量,我们就放一个右括号。
    来保证我们的括号是成对而且有效的。


三、代码实现

class Solution {
    public List<String> generateParenthesis(int n) {
        List<String> res = new ArrayList<String>();
        dfs(res, new StringBuilder(), 0, 0, n);
        return res;
    }
    public void dfs(List<String> ans, StringBuilder cur, int l, int r, int len) {
if (cur.length() == len * 2) {
            ans.add(cur.toString());
            return;
        }
if (l < len) {
            cur.append('(');
            dfs(ans, cur, l +1, r, len);
            cur.deleteCharAt(cur.length() -1);
        }
if (r < l) {
            cur.append(')');
            dfs(ans, cur, l, r +1, len);
            cur.deleteCharAt(cur.length() -1);
        }
    }
}


复杂度分析


  • 时间复杂度:典型的卡特兰数问题,复杂度为
    网络异常,图片无法展示
    |
    n个左括号的个数。
  • 空间复杂度:
    网络异常,图片无法展示
    |


运行结果


网络异常,图片无法展示
|


总结


这道题就是遍历所有n对括号组合生成的字符串,然后做有效括号的验证。


但是这些会产生比较多不符合的。所以我们可以根据规律,进一步的缩小范围,让它只递归产生我们需要的结果。

目录
相关文章
|
存储 缓存 Linux
如何在Linux环境下对pip的缓存地址进行修改
如何在Linux环境下对pip的缓存地址进行修改
3221 0
|
NoSQL 安全 MongoDB
Mongo DB之用户与权限管理、备份与恢复管理以及客户端工具的使用
MongoDB是一款灵活且高性能的文档型数据库,具有可扩展性和强大的查询功能,适用于各种应用场景。
1516 1
|
12月前
|
机器学习/深度学习 人工智能 算法
快瞳犬种识别效果图示,120种狗品种精准覆盖
犬种识别技术已从实验室走向大众,基于深度学习的卷积神经网络(CNN)和YOLO系列算法,可高效实现犬种分类与目标检测。本文介绍了快瞳犬种识别的技术原理、训练代码及应用场景,包括宠物管理、遗传疾病研究、公共安全、城市管理及遗失宠物寻找等。通过Python代码加载YOLOv8模型并进行训练,模型能在图像中标注犬种及其边界框,为智慧生活提供技术支持。
914 33
|
11月前
|
人工智能 搜索推荐 程序员
程序员圈爆火,狂揽2.4K星!1秒内AI语音双向对话,支持个性化发音和多端适配,颠覆你的交互想象!
RealtimeVoiceChat是一款基于现代Web技术的开源实时语音对话工具,无需下载任何软件,打开浏览器即可与AI实时语音互动。其核心亮点包括零安装体验、超低延迟、高度可定制化以及跨平台兼容等特性。通过Web Speech API实现毫秒级语音合成,支持多参数精细控制(如音色、语速、音调等),并提供隐私安全保障。项目适用于无障碍辅助、语言学习、智能客服及内容创作等多个场景。开发者可快速集成GPT/Claude等大模型,扩展为企业级应用。此外,随着Web Speech API普及率提升,该项目有望推动语音交互在教育、智能家居等领域的发展
1223 4
|
机器学习/深度学习 缓存 负载均衡
Qwen MoE关键细节:通过全局负载均衡提升模型性能和专家的特异化程度
Qwen MoE关键细节:通过全局负载均衡提升模型性能和专家的特异化程度
|
存储 SQL 分布式计算
AnalyticDB for MySQL最佳实践总结
随着AnalyticDB for MySQL(下文统一简称:ADB)在阿里集团各个业务线、社会上各行各业的推广应用,我们沉淀了一些最佳实践,现在笔者整理在这里,供大家参考,希望对大家有帮助。本篇文章总结了ADB表的设计的最佳经验、数据写入的最佳经验、高效查询的最佳实践,以及一些常见的问题。 说明: 1.在读这篇文章之前,请先了解ADB的产品官方文档,以提前适当了解ADB; 2.本文写的最佳实践主要针对ADB3.0,ADB2.0在原理上也同样适用。
5959 1
AnalyticDB for MySQL最佳实践总结
|
人工智能 自然语言处理 前端开发
三大行业案例:AI大模型+Agent实践全景
本文将从AI Agent和大模型的发展背景切入,结合51Talk、哈啰出行以及B站三个各具特色的行业案例,带你一窥事件驱动架构、RAG技术、人机协作流程,以及一整套行之有效的实操方法。具体包含内容有:51Talk如何让智能客服“主动进攻”,带来约课率、出席率双提升;哈啰出行如何由Copilot模式升级为Agent模式,并应用到客服、营销策略生成等多个业务场景;B站又是如何借力大模型与RAG方法,引爆了平台的高效内容检索和强互动用户体验。
3726 5
npm显示升级到最新版本仍然显示npm为原版本的问题解决
npm显示升级到最新版本仍然显示npm为原版本的问题解决
npm显示升级到最新版本仍然显示npm为原版本的问题解决