【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

相关推荐
炽烈小老头几秒前
【 每天学习一点算法 2026/03/23】数组中的第K个最大元素
学习·算法·排序算法
老鱼说AI10 分钟前
大规模并发处理器程序设计(PMPP)讲解(CUDA架构):第四期:计算架构与调度
c语言·深度学习·算法·架构·cuda
月落归舟13 分钟前
帮你从算法的角度来认识数组------( 二 )
数据结构·算法·数组
feng_you_ying_li22 分钟前
linux之用户的权限详解(4)
linux·运维·服务器
阿贵---29 分钟前
C++中的RAII技术深入
开发语言·c++·算法
NAGNIP37 分钟前
面试官:深度学习中经典的优化算法都有哪些?
算法
PiKaMouse.1 小时前
navigation2-humble从零带读笔记第一篇:nav2_core
c++·算法·机器人
木井巳1 小时前
【递归算法】子集
java·算法·leetcode·决策树·深度优先
二进制person1 小时前
JavaEE初阶 --网络编程
linux·服务器·网络
lightqjx1 小时前
【算法】二分算法
c++·算法·leetcode·二分算法·二分模板