【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

相关推荐
太空的旅行者13 分钟前
告别双系统——WSL2+UBUNTU在WIN上畅游LINUX
linux·运维·ubuntu
人工智能训练师2 小时前
Ubuntu22.04如何安装新版本的Node.js和npm
linux·运维·前端·人工智能·ubuntu·npm·node.js
灿烂阳光g2 小时前
domain_auto_trans,source_domain,untrusted_app
android·linux
风中的微尘4 小时前
39.网络流入门
开发语言·网络·c++·算法
Ronin3054 小时前
【Linux系统】日志与策略模式
linux·策略模式·日志
ZzzK,4 小时前
JAVA虚拟机(JVM)
java·linux·jvm
西红柿维生素5 小时前
JVM相关总结
java·jvm·算法
Aspiresky5 小时前
浅析Linux进程信号处理机制:基本原理及应用
linux·运维·信号处理
ajassi20006 小时前
linux C 语言开发 (八) 进程基础
linux·运维·服务器
ChillJavaGuy6 小时前
常见限流算法详解与对比
java·算法·限流算法