leetcode 22括号生成

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

示例:

输入:n = 3
输出:[
       "((()))",
       "(()())",
       "(())()",
       "()(())",
       "()()()"
     ]

解法:使用回溯控制生成的左右,使用left和right记录生成的括号数量,每次进行回溯时,判断当前的括号情况,满足条件:

  • 先生成左括号(,再生成右括号)
    -如果左括号少于n,就递归的生成左括号,如果右括号少于左括号,就生成右括号,因为每次生成都会判断,所以可以满足闭合性
左右括号天然的分成2部分,所以会分开考虑左右括号,咋一看很容易没有思路
class Solution:
    def generateParenthesis(self, n: int) -> List[str]:
        if n==0:
            return []
        ans=[]
        def backtrace(path,left,right):
            if len(path)==2*n:
                ans.append(''.join(path))
                return
            if left<n:
                path.append('(')
                backtrace(path,left+1,right)
                path.pop()
            if right<left:
                path.append(')')
                backtrace(path,left,right+1)
                path.pop()
        backtrace([],0,0)
        return ans
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 题目 给出 n 代表生成括号的对数,请你写出一个函数,使其能够生成所有可能的并且有效的括号组合。 例如,给出 n ...
    半亩房顶阅读 369评论 0 1
  • 1.题目描述 给出 n 代表生成括号的对数,请你写出一个函数,使其能够生成所有可能的并且有效的括号组合。例如,给出...
    NWPU_HaiboWu阅读 164评论 0 1
  • 题目描述 给出 n 代表生成括号的对数,请你写出一个函数,使其能够生成所有可能的并且有效的括号组合。 例如,给出 ...
    河海中最菜阅读 55评论 0 0
  • 题目链接 题目描述: 思路:递归 分析如下: 在生成括号组合的字符串时,最左边的一定是左括号。 什么时候可以生成右...
    憨憨二师兄阅读 168评论 0 3
  • 久违的晴天,家长会。 家长大会开好到教室时,离放学已经没多少时间了。班主任说已经安排了三个家长分享经验。 放学铃声...
    飘雪儿5阅读 7,573评论 16 22