【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
相关推荐
萌萌站起2 分钟前
Vscode 中 python模块的导入问题
ide·vscode·python
是小蟹呀^16 分钟前
【总结】提示词工程
python·llm·prompt·agent
YBAdvanceFu19 分钟前
从零构建智能体:深入理解 ReAct Plan Solve Reflection 三大经典范式
人工智能·python·机器学习·数据挖掘·多智能体·智能体
Morwit25 分钟前
【力扣hot100】 1. 两数之和
数据结构·c++·算法·leetcode·职场和发展
py有趣33 分钟前
力扣热门100题之岛屿的数量(DFS/BFS经典题)
leetcode·深度优先·宽度优先
王夏奇35 分钟前
python中的__all__ 具体用法
java·前端·python
王夏奇39 分钟前
pycharm中3种不同类型的python文件
ide·python·pycharm
无小道1 小时前
算法——暴力+优化
算法·优化·暴力
Free Tester1 小时前
如何判断 LeakCanary 报告的严重程度
java·jvm·算法
小陈的进阶之路1 小时前
Selenium 滑动 vs Appium 滑动
python·selenium·测试工具·appium