0
点赞
收藏
分享

微信扫一扫

Python描述 LeetCode 22. 括号生成


Python描述 LeetCode 22. 括号生成

  大家好,我是亓官劼(qí guān jié ),在【亓官劼】公众号、GitHub、B站等平台分享一些技术博文,主要包括前端开发、python后端开发、小程序开发、数据结构与算法、docker、Linux常用运维、NLP等相关技术博文,时光荏苒,未来可期,加油~

  如果喜欢博主的文章可以关注博主的个人公众号【亓官劼】(qí guān jié),里面的文章更全更新更快。如果有需要找博主的话可以在公众号后台留言,我会尽快回复消息.

Python描述 LeetCode 22. 括号生成_python

本文原创为【亓官劼】(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


举报

相关推荐

0 条评论