LeetCode.22。括号生成

题目描述:

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

输入输出实例:

思路:对于这道题目我们可以用回溯法,创建一个函数backtrack(当前字符,左括号数量,右括号数量),这个函数用来递归生成所有的括号组成可能。我们先前创立一个空列表,在backtrack递归过程中满足条件的我们放到列表中,最后返回列表。

在backtrack中,如果当前的字符组成满足长度等于2*n的时候,我们得到一个有效的括号组成,将其加到ans列表;如果当前左括号比n少,我们继续添加左括号;如果当前右括号比左括号少,我们添加右括号。

比如当n==2时候,我们先是添加一个左括号->再添加左括号->再添加右括号->再添加右括号->满足条件将'(())'存入ans。然后返回到'('尝试添加右括号(即'()')->再添加左括号->再添加右括号->将'()()'存入ans->递归结束,return ans

python 复制代码
class Solution:
    def generateParenthesis(self, n: int) -> List[str]:
        #构建函数backtrack用来构建有效括号组合
        def backtrack(s:str,left:int,right:int):
            #达到目标长度放入
            if len(s) == 2*n:
                ans.append(s)
                return
            
            #左括号数量不够可加左括号
            if left < n :
                backtrack(s+'(',left+1,right)
            
            #右括号不足加右括号
            if right < left :
                backtrack(s+')',left,right+1)
            

        ans = []
        backtrack('',0,0)
        return ans
相关推荐
胖咕噜的稞达鸭1 小时前
算法入门:专题攻克一---双指针(3)有效三角形的个数 查找总价格为目标值的两个商品(剑指offer题目)
算法
Rock_yzh2 小时前
AI学习日记——参数的初始化
人工智能·python·深度学习·学习·机器学习
青衫客364 小时前
基于 Python 构建的安全 gRPC 服务——TLS、mTLS 与 Casbin 授权实战
python·安全·微服务
-dzk-5 小时前
【3DGS复现】Autodl服务器复现3DGS《简单快速》《一次成功》《新手练习复现必备》
运维·服务器·python·计算机视觉·3d·三维重建·三维
逻辑留白陈6 小时前
Adaboost进阶:与主流集成算法对比+工业级案例+未来方向
算法
Learn Beyond Limits6 小时前
Mean Normalization|均值归一化
人工智能·神经网络·算法·机器学习·均值算法·ai·吴恩达
摩羯座-185690305946 小时前
爬坑 10 年!京东店铺全量商品接口实战开发:从分页优化、SKU 关联到数据完整性闭环
linux·网络·数据库·windows·爬虫·python
ACERT3336 小时前
5.吴恩达机器学习—神经网络的基本使用
人工智能·python·神经网络·机器学习
天选之女wow6 小时前
【代码随想录算法训练营——Day28】贪心算法——134.加油站、135.分发糖果、860.柠檬水找零、406.根据身高重建队列
算法·leetcode·贪心算法
Gohldg6 小时前
C++算法·贪心例题讲解
c++·数学·算法·贪心算法