【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
相关推荐
ccLianLian3 分钟前
数论·欧拉函数
数据结构·算法
2501_945424809 分钟前
C++编译期矩阵运算
开发语言·c++·算法
yy我不解释14 分钟前
关于comfyui的mmaudio音频生成插件时时间不一致问题(三)
开发语言·python·ai作画·音视频·comfyui
2301_8154829316 分钟前
C++中的类型标签分发
开发语言·c++·算法
冗量20 分钟前
langchain的学习路径
python·langchain
xushichao198921 分钟前
代码生成优化技术
开发语言·c++·算法
love530love28 分钟前
不用聊天软件 OpenClaw 手机浏览器远程访问控制:Tailscale 配置、设备配对与常见问题全解
人工智能·windows·python·智能手机·tailscale·openclaw·远程访问控制
炽烈小老头28 分钟前
【每天学习一点算法 2026/03/22】前 K 个高频元素
学习·算法
2401_8732046534 分钟前
模板编译期循环展开
开发语言·c++·算法
木心月转码ing35 分钟前
Hot100-Day51-TT70爬楼梯
算法