【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

相关推荐
AI绘画哇哒哒16 小时前
AI 智能体长期记忆系统架构设计与落地实践
人工智能·学习·算法·ai·程序员·产品经理·转行
加藤不太惠16 小时前
【无标题】
java·数据结构·算法
学困昇16 小时前
Linux基础开发工具(下):调试器gdb/cgdb的使用详解
linux·运维·服务器·开发语言·c++
金色旭光16 小时前
目标追踪算法+卡尔曼滤波原理+ByteTrack使用
算法
liulilittle16 小时前
Linux shell 搜索指定后缀名文件,并复制到指定目录。
linux·服务器·数据库
必胜刻16 小时前
Redis哨兵模式(Linux)
linux·数据库·redis
学学学无无止境16 小时前
力扣-从中序与后序遍历序列构造二叉树
leetcode
夏乌_Wx16 小时前
练题100天——DAY22:数字拼接+只出现一次的数字
java·数据结构·算法
listhi52016 小时前
MOEAD算法实现详解(基于Python与MATLAB)
python·算法·matlab
李玮豪Jimmy17 小时前
Day32:动态规划part5(完全背包、518.零钱兑换 II、377.组合总和 Ⅳ、70.爬楼梯 (进阶))
算法·动态规划