Python描述 LeetCode 22. 括号生成
大家好,我是亓官劼(qí guān jié ),在【亓官劼】公众号、GitHub、B站等平台分享一些技术博文,主要包括前端开发、python后端开发、小程序开发、数据结构与算法、docker、Linux常用运维、NLP等相关技术博文,时光荏苒,未来可期,加油~
如果喜欢博主的文章可以关注博主的个人公众号【亓官劼】(qí guān jié),里面的文章更全更新更快。如果有需要找博主的话可以在公众号后台留言,我会尽快回复消息.
本文原创为【亓官劼】(qí guān jié ),请大家支持原创,部分平台一直在恶意盗取博主的文章!!! 全部文章请关注微信公众号【亓官劼】。
题目
数字 n
代表生成括号的对数,请你设计一个函数,用于能够生成所有可能的并且 有效的 括号组合。
示例 1:
输入:n = 3
输出:["((()))","(()())","(())()","()(())","()()()"]
示例 2:
输入:n = 1
输出:["()"]
提示:
-
1 <= n <= 8
Python描述一
回溯,保证括号合法即可
class Solution:
def generateParenthesis(self, n: int) -> List[str]:
res = []
def generate(tmp,l,r):
if l + r == n * 2:
res.append(''.join(tmp))
return
if l < n:
tmp.append('(')
generate(tmp,l+1,r)
tmp.pop()
if r < l:
tmp.append(')')
generate(tmp,l,r+1)
tmp.pop()
generate([],0,0)
return
Pytho描述二
按括号长度进行递归
class Solution:
def generateParenthesis(self, n: int) -> List[str]:
if n == 0:
return ['']
res = []
for c in range(n):
for left in self.generateParenthesis(c):
for right in self.generateParenthesis(n-1-c):
res.append(f'({left}){right}')
return