【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
相关推荐
明月看潮生6 分钟前
青少年编程与数学 02-019 Rust 编程基础 09课题、流程控制
开发语言·算法·青少年编程·rust·编程与数学
程序猿小三12 分钟前
python uv的了解与使用
开发语言·python·uv
oioihoii14 分钟前
C++23 views::slide (P2442R1) 深入解析
linux·算法·c++23
T0uken15 分钟前
【Python】UV:单脚本依赖管理
chrome·python·uv
yuhao__z34 分钟前
代码随想录算法训练营第六十三天| 图论9—卡码网47. 参加科学大会,94. 城市间货物运输 I
算法·图论
郭逍遥39 分钟前
[工具]B站缓存工具箱 (By 郭逍遥)
windows·python·缓存·工具
alpszero1 小时前
YOLO11解决方案之物体模糊探索
人工智能·python·opencv·计算机视觉·yolo11
June`1 小时前
专题三:穷举vs暴搜vs深搜vs回溯vs剪枝(全排列)决策树与递归实现详解
c++·算法·深度优先·剪枝
vlln1 小时前
适应性神经树:当深度学习遇上决策树的“生长法则”
人工智能·深度学习·算法·决策树·机器学习
伊织code1 小时前
PyTorch API 6 - 编译、fft、fx、函数转换、调试、符号追踪
pytorch·python·ai·api·-·6