【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

相关推荐
crescent_悦13 小时前
PTA L1-020 帅到没朋友 C++
数据结构·c++·算法
8***848214 小时前
如何在Linux中找到MySQL的安装目录
linux·运维·mysql
鳄鱼儿14 小时前
密码算法的OID查阅
算法
9***J62814 小时前
Linux下PostgreSQL-12.0安装部署详细步骤
linux·运维·postgresql
lxh011314 小时前
螺旋数组题解
前端·算法·js
W***832014 小时前
如何在 Ubuntu 22.04 上安装 MySQL
linux·mysql·ubuntu
czlczl2002092515 小时前
算法:二叉树的公共祖先
算法
凌寒1115 小时前
Linux(Debain)安装Redis、数据迁移
linux·运维·服务器·redis
7***q60815 小时前
在linux(Centos)中Mysql的端口修改保姆级教程
linux·mysql·centos
稚辉君.MCA_P8_Java16 小时前
Gemini永久会员 Java动态规划
java·数据结构·leetcode·排序算法·动态规划