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
相关推荐
2601_962097369 小时前
GraphQL,Grafana和Dash
python·grafana·数据可视化·graphql·dash
find1star15 小时前
LeetCode 141:环形链表
java·算法·leetcode·链表
迅翼SwiftWing16 小时前
编队系列(总)|固定翼编队如何实现稳定飞行?通信架构、协同算法与工程约束深度解析
算法·架构
LB211216 小时前
力扣160 21 86
算法·leetcode·职场和发展
benchmark_cc16 小时前
REST API 和 Python SDK 应该怎么选?量化交易数据接口选型实战
开发语言·python·数据分析·pandas·量化交易·股票数据·quantdash
小智老师PMP17 小时前
2026深度解析|PMP第八版与NPDP核心侧重点本质区别(管理类证书怎么选)
开发语言·分布式·算法·职场和发展·产品经理
HugoStudio_SWAN17 小时前
洛谷 B4450 / B3867 / B3923 智慧购物、储蓄与做题——从程序到生活
c++·学习·程序人生·算法·生活
a1879272183117 小时前
【算法】动态规划第二篇:双序列 DP 三课——继承、计步与断链
算法·leetcode·动态规划·dp·回溯·暴力·算法讲解
2601_9623824317 小时前
python快乐编程网络爬虫课后答案
python·网络爬虫·学习工具·课后答案·刷题app
鹏哥带你干乡墅18 小时前
优选乡墅赋能培训平台如何帮助提升乡村建设?
大数据·人工智能·python