【leetcode100】括号生成

1、题目描述

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

示例 1:

复制代码
输入:n = 3
输出:["((()))","(()())","(())()","()(())","()()()"]

2、初始思路

2.1 思路

全排列+筛选

2.2 犯错点

全排列,时间复杂度高,且易读性较差

3 优化算法

3.1 思路

在构造的过程中直接确保括号的正确匹配:

  • 当左括号数量<n时,可以继续添加左括号;
  • 当右括号数量<左括号数量时,才可以添加右括号。

3.2 代码

复制代码
class Solution:
    def generateParenthesis(self, n: int) -> List[str]:
        res = []
        path = []
        def backtracking(path, left, right):
            if len(path) == 2*n:
                res.append(''.join(path.copy()))
                return
            if left<n:
                path.append('(')
                backtracking(path, left+1, right)
                path.pop()
            if right<left:
                path.append(')')
                backtracking(path, left, right+1)
                path.pop()
        backtracking(path, 0, 0)
        return res
相关推荐
apocelipes12 小时前
常用编程语言和库的正则表达式性能对比
c语言·c++·python·性能优化·golang·开发工具和环境
HjhIron14 小时前
面试常客:字符串算法从入门到进阶
算法·面试
用户83562907805114 小时前
使用 Python 在 PDF 中创建与管理书签
后端·python
吴佳浩15 小时前
DeepSeek DSpark:Confidence-Scheduled Speculative Decoding 技术解析
人工智能·算法·deepseek
触底反弹16 小时前
🧠 搞懂 Token,才算真正入门大模型——从分词原理到 Embedding 语义实战
javascript·人工智能·算法
MeixianAgent18 小时前
Python 回测数据入口怎么验?历史 K 线入库前先做 5 个检查
后端·python
vivo互联网技术21 小时前
ICLR 2026 | 基于后验采样的图像恢复方法LearnIR:人脸去阴影、去雾
人工智能·算法·aigc
咕白m6251 天前
用 Python 实现一键批量查找与替换 Excel 数据
后端·python
浮生望1 天前
JS字符串与回文算法:从包装类到双指针的面试进阶之路
javascript·算法
黄敬峰1 天前
面试必刷:从JS底层包装类到双指针,彻底搞懂字符串与回文算法
算法