【LeetCode】22. 括号生成

1 问题

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

示例 1:

输入:n = 3

输出:"((()))","(()())","(())()","()(())","()()()"

示例 2:

输入:n = 1

输出:"()"

2 答案

这题直接不会

官方解利用回溯算法

深度优先遍历

python 复制代码
class Solution:
    def generateParenthesis(self, n: int) -> List[str]:

        res = []
        cur_str = ''

        def dfs(cur_str, left, right):
            if left ==0 and right == 0:
                res.append(cur_str)
                return
            if left > right:
                return
            if left > 0:
                dfs(cur_str+'(', left-1, right)
            if right > 0:
                dfs(cur_str+')', left, right-1)

        dfs(cur_str, n, n)
        return res
相关推荐
NEFU_Jyj8 小时前
牛客周赛R168
算法
文丑颜不良啊16 小时前
LeetCode2221~2240题目解析
java·leetcode
Navigator_Z16 小时前
LeetCode //C - 1317. Convert Integer to the Sum of Two No-Zero Integers
c语言·算法·leetcode
D e re k ZH17 小时前
C++ 标准库算法全景指南
数据结构·c++·算法
冻柠檬飞冰走茶18 小时前
字母移动游戏题解:贪心求最长可保留连续子串(附 C 实现)
c语言·开发语言·数据结构·算法·动态规划
文丑颜不良啊18 小时前
LeetCode2161~2180题目解析
java·leetcode
雪落漂泊18 小时前
C++算法 二分查找篇(上)
开发语言·c++·算法
文丑颜不良啊20 小时前
LeetCode2141~2160题目解析
java·leetcode
LabVIEW开发20 小时前
LabVIEW 连接板:28 个端子怎么排,优先级怎么定
java·算法·labview