【LeetCode】括号生成

目录


一、题目

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

示例 1:

输入:n = 3

输出:["((()))","(()())","(())()","()(())","()()()"]

示例 2:

输入:n = 1

输出:["()"]

提示:

1 <= n <= 8


二、解法

回溯,优先放置左括号,两个边界条件,一个是正常的,即左右都放完了,还有一个是异常的,也就是左边剩余的比右边多,直接return就好了


完整代码

python 复制代码
class Solution:
    def generateParenthesis(self, n: int) -> List[str]:
        res = []
        path = ''
        def backtrack(left, right, path):
            if left > right:
                return
            if left == right == 0:
                return res.append(path)
            if left:
                backtrack(left - 1, right, path + '(')
            if right:
                backtrack(left, right - 1, path + ')')
        backtrack(n, n, '')
        return res

相关推荐
ctrigger18 小时前
监理工程师考试题型有哪些?4科题型+分值表
大数据·javascript·算法
djxbbdjedhb18 小时前
Linux应用学习-读取jpg显示在LCD上
linux·学习
YGGP19 小时前
【Golang】LeetCode 1143. 最长公共子序列
算法·leetcode
Swift社区19 小时前
LeetCode 459 - 重复的子字符串
算法·leetcode·职场和发展
byzh_rc19 小时前
[算法设计与分析-从入门到入土] 图遍历
算法·深度优先
prettyxian19 小时前
【Linux】内核编织术:task_struct的动态网络
linux·运维·服务器
Danileaf_Guo19 小时前
OSPF路由引入的陷阱:为何Ubuntu上静态路由神秘消失?深挖FRR路由分类机制
linux·运维·网络·ubuntu·智能路由器
张某人的胡思乱想19 小时前
windows远程ubuntu
linux·运维·ubuntu
QT 小鲜肉19 小时前
【Linux命令大全】001.文件管理之mtoolstest命令(实操篇)
linux·运维·前端·笔记·microsoft
小李小李快乐不已19 小时前
动态规划理论基础
数据结构·c++·算法·leetcode·动态规划