【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
相关推荐
成成成成成成果几秒前
软件测试面试八股文:测试技术 10 大核心考点(二)
python·功能测试·测试工具·面试·职场和发展·安全性测试
二向箔reverse11 分钟前
人脸特征可视化进阶:用 dlib+OpenCV 绘制面部轮廓与器官凸包
开发语言·python
花心蝴蝶.16 分钟前
JVM 垃圾回收
java·jvm·算法
im_AMBER22 分钟前
hello算法笔记 02
笔记·算法
这儿有一堆花22 分钟前
从图像到精准文字:基于PyTorch与CTC的端到端手写文本识别实战
人工智能·pytorch·python
Michelle802329 分钟前
决策树习题
算法·决策树·机器学习
hn小菜鸡35 分钟前
LeetCode 2540.最小公共值
数据结构·算法·leetcode
Tisfy35 分钟前
LeetCode 0611.有效三角形的个数:双指针
算法·leetcode·题解·双指针
Keying,,,,39 分钟前
力扣hot100 | 多维动态规划 | 62. 不同路径、64. 最小路径和、5. 最长回文子串、1143. 最长公共子序列、72. 编辑距离
算法·leetcode·动态规划
SunnyDays101143 分钟前
Python 高效实现 PDF 转 Word:告别手动复制粘贴
python·pdf转word·pdf转docx·pdf转doc·pdf到word转换